node.js - 无法在 expo-react-native 应用程序上运行 'expo start',权限问题

标签 node.js react-native npm expo linux-mint

Well, i see that already have many questions related to my problem on this site, but i also see that NONE of the solutions work for my specific case, because of that, i am opening that question, so it is not a duplicate.

上下文(环境)

  • Linux Mint 19.1 肉桂色
  • 世博会 v32
  • React-Native-Application
  • GitHub 私有(private)存储库(从我克隆应用程序的地方)
  • Node 最新 LTS (v10.15.1)
  • NPM v6.4.1
  • /\两者都使用 NVM( Node 版本管理器)

package.json

{
"main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "eject": "expo eject"
  },
  "dependencies": {
    "@expo/vector-icons": "^9.0.0",
    "expo": "^32.0.0",
    "lodash.clonedeep": "^4.5.0",
    "native-base": "^2.10.0",
    "react": "16.5.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
    "react-native-credit-card-input": "https://github.com/itspauloroberto/react-native-credit-card-input.git",
    "react-native-password-strength-meter": "https://github.com/itspauloroberto/react-native-password-strength-meter.git",
    "react-native-responsive-screen": "^1.2.0",
    "react-native-scalable-image": "^0.5.0",
    "react-navigation": "^3.0.9",
    "react-redux": "^6.0.0",
    "redux": "^4.0.1",
    "redux-form": "^8.1.0",
    "redux-saga": "^0.16.2",
    "url-join": "^4.0.0",
    "vanilla-masker": "^1.2.0"
  },
  "devDependencies": {
    "babel-preset-expo": "^5.0.0"
  },
  "private": true
}

问题

我的问题是当我尝试运行以下相同的命令 expo startnpm start 时。

我几乎不相信这是一个操作系统问题,因为上周我在另一个操作系统 elementary-os 上使用同一个项目,我没有遇到任何问题!

然后当我执行 expo startnpm start 时出现此错误:

Uncaught Error { [Error: EACCES: permission denied, open '/home/itspauloroberto/.expo/state.json.354451305']
  errno: -13,
  code: 'EACCES',
  syscall: 'open',
  path: '/home/itspauloroberto/.expo/state.json.354451305' }

如何重现它:

  • 安装/使用操作系统 Linux Mint 19.1 Cinnamon。
  • 安装 nvm ( Node 版本管理器)
  • 使用 nvm install 10.15.1 安装 npm 和 Node
  • 使用 npm install expo-cli 安装 expo-cli>
  • 使用 expo init 创建一个新的 expo react-native 项目。
  • 尝试使用 expo start 运行它。

我试过的

首先,我确定这个项目/应用程序运行正常,因为上周我有另一个操作系统 (elementaryOS),我在这个项目上工作没有任何问题,而且我有一个团队在处理它也没有问题。

  • 我尝试重新安装我的 nodenpm 以及 expo-cli
  • 我尝试了 rm -rf node_modulesnpm install
  • 我尝试再次删除 package.lock.jsonnpm install
  • 我试图为 npm global installs 设置一个全局目录,如前所述 here
  • 我尝试安装 nvm Node 版本管理器(我正在使用它 atm)。
  • 我尝试chown myuser project-folder 让我的用户访问该文件夹(也在 .expo 文件夹和 node_modules 文件夹上尝试过)
  • 我尝试chmod 777 and 755 and 655 整个项目文件夹。
  • 我尝试使用 sudo 前缀运行 expo startnpm start 命令,但 sudo 找不到 expo或者 npm
  • 我尝试删除存储库并再次使用 git clone 克隆它。
  • 还有很多很多其他的事情。 (我也做了猎物)
  • 也没有 SELinux 参与,如下所示:

    ls -ld

    drwxr-xr-x 2 itspauloroberto itspauloroberto 4096 Feb 20 14:54 .

正因为如此,我提出了这个问题,即使我在许多网站上看到这个错误,也没有我的上下文。

最佳答案

我发现了问题!

主要原因是因为在某些时候,我使用sudo安装了与expo相关的东西,然后expo创建了一些属于root的文件另一个目录中的用户,该目录不在我正在工作的项目文件夹中。

所以这是因为 expo 在最初安装 expo 时的初始文件显然是使用 sudo 安装的,因为此目录中的文件:home/itspauloroberto/.expo 并且文件夹归 root 所有(我使用 la -ls 命令检查它并看到 root 作为所有者。)而不是我的用户 itspauloroberto 是错误的主要原因。

要消除此错误,请执行以下步骤:

  • 导航到 home/your_user/ 目录。
  • 使用 sudo rm -rf .expo 删除 .expo 文件夹(需要 sudo,因为文件夹所有者是 root)
  • 使用expo start再次运行expo

如果您发现与某些目录或文件相关的任何其他错误,请导航至错误消息中的文件/目录并将其删除。因为它也应该属于 root 用户。

关于node.js - 无法在 expo-react-native 应用程序上运行 'expo start',权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54793345/

相关文章:

reactjs - Mousetrap.bindGlobal 不是一个函数

node.js - 安装Angular不支持的引擎,OSX

javascript - 为什么填充值数组后变成空?

node.js - 如何在for循环中正确执行异步调用?

javascript - 通过辅助函数渲染时,我得到 : "Objects are not valid as a React child" error

android - React Native 在 android 上获得正确的状态栏高度

javascript - 如何使库在 Node 模块中可用

javascript - node-imagemagick 与 node-gm 相比如何?

react-native - 如何在React Native Android应用中显示当前的CodePush版本标签?

node.js - Node v0.8.5 REPL : Cannot find module when requiring npm installed module