关于node.js:无法在本地反应应用程序上运行\\’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.

上下文(环境)

  • Linux Mint 19.1肉桂
  • 世博v32
  • React-Native-Application
  • GitHub私有存储库(我从那里克隆了应用程序)
  • 节点最新LTS(v10.15.1)
  • NPM v6.4.1
  • / \\\\都使用NVM(节点版本管理器)

package.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
"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时出现此错误:

1
2
3
4
5
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' }

如何复制它:

  • 安装/使用OS Linux Mint 19.1 Cinnamon。
  • 安装nvm(node-version-manager)
  • 使用nvm install 10.15.1安装npm和节点
  • 使用npm install expo-cli安装expo-cli
  • 使用expo init创建一个新的expo react-native项目。
  • 尝试使用expo start运行它。

我尝试过的

首先,我确定此项目/应用程序可以正常运行,因为上周我有另一个OS(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整个项目文件夹。
  • 我尝试使用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用户的某些文件正在工作。

这是因为显然是使用sudo安装了expo最初安装时expo的初始文件,因为该目录内的文件:home/itspauloroberto/.expo以及该文件夹也归root拥有(我已选中使用la -ls命令并看到root作为所有者。)而不是错误的主要来源我的用户itspauloroberto

要摆脱此错误,请执行以下步骤:

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

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


先卸载博览会。然后卸载npm并重新安装npm,然后再安装expo