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 start
或 npm 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' }
如何重现它:
- 安装/使用操作系统 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),我在这个项目上工作没有任何问题,而且我有一个团队在处理它也没有问题。
- 我尝试重新安装我的
node
和npm
以及expo-cli
。 - 我尝试了
rm -rf node_modules
和npm install
。 - 我尝试再次删除
package.lock.json
和npm install
。 - 我试图为 npm global installs 设置一个全局目录,如前所述 here
- 我尝试安装
nvm
Node 版本管理器(我正在使用它 atm)。 - 我尝试
chown myuser project-folder
让我的用户访问该文件夹(也在 .expo 文件夹和 node_modules 文件夹上尝试过) - 我尝试
chmod 777 and 755 and 655
整个项目文件夹。 - 我尝试使用
sudo
前缀运行expo start
、npm 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/