无法在 expo-react-native 应用上 运行 'expo start',权限问题

Can't run 'expo start' on a expo-react-native app, permission problem

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.

Context(环境)

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 是相同的。

我几乎不相信这是一个 OS 问题 因为上周我在另一个 os 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' }

如何重现:

我试过的

首先,我确定这个 project/application 运行 没问题,因为我上周有另一个 OS (初级OS),我是在这个项目上工作没有问题,我也有一个团队在这个项目上工作也没有问题。

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

我找到问题了!

主要是因为我在某个时候使用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
  • 展示

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

先卸载 expo。然后卸载 npm 并重新安装 npm 然后 expo

我遇到这个问题是因为我一直在本地使用 cmd,在 Ubuntu WSL2 子系统中使用 bash。

我一定是从 ubuntu 终端安装了一些包,所以除了从我的 WSL 主目录中删除 .expo 文件外,我还必须删除我的 node_modules 文件,并且运行 npm install 来自我的 windows-cmd 控制台。

通常当您看到如下错误时:

未捕获错误错误:EACCES:权限被拒绝,打开'/Users/r/.expo/state.json.728296139'

您可以再次尝试 运行 命令,但前面要加上 sudo。

例如下面的错误:

expo init my-app
Uncaught Error Error: EACCES: permission denied, open '/Users/r/.expo/state.json.728296139'

可以通过以下方式解决:

$ sudo expo init my-app
Password: