无法在 expo-react-native 应用程序上运行“expo start”,权限问题

Pau*_*osa 6 node.js linux-mint npm react-native expo

好吧,我看到在这个网站上已经有很多与我的问题相关的问题,但我也看到没有一个解决方案适用于我的具体情况,因此,我打开了那个问题,所以它不是重复的

上下文(环境)

  • Linux Mint 19.1 肉桂
  • 世博会 v32
  • 反应原生应用
  • GitHub 私有存储库(从我克隆应用程序的地方)
  • 节点最新 LTS (v10.15.1)
  • NPM v6.4.1
  • // 两者都使用 NVM(节点版本管理器)

包.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
}
Run Code Online (Sandbox Code Playgroud)

问题

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

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

然后我在执行expo start或执行时收到此错误npm 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' }
Run Code Online (Sandbox Code Playgroud)

如何重现它:

  • 安装/使用操作系统 Linux Mint 19.1 Cinnamon。
  • 安装nvm (node-version-manager)
  • 使用安装 npm 和 node nvm install 10.15.1
  • 安装 expo-cli 使用 npm install expo-cli
  • 使用expo init.
  • 尝试使用expo start.

我试过的

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

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

    ls -ld

    drwxr-xr-x 2 itspauloroberto itspauloroberto 4096 二月 20 14:54。

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

Pau*_*osa 12

我发现了问题!

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

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

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

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

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