好吧,我看到这个网站上已经有很多与我的问题相关的问题,但我也看到没有一个解决方案适用于我的具体情况,因此,我正在打开这个问题,所以它不是重复的。
上下文(环境)
- 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
}
问题所在
我的问题是当我尝试运行以下命令时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' }
如何重现它:
- 安装/使用OS Linux Mint 19.1 Cinnamon。
- 安装 nvm(节点版本管理器)
- 使用
nvm install 10.15.1
安装 npm 和节点 - 使用
npm install expo-cli
安装 expo-cli - 使用
expo init
创建新的世博会反应原生项目。 - 尝试使用
expo start
运行它。
我尝试过什么
首先,我确定这个项目/应用程序运行正常,因为我上周有另一个操作系统(elementaryOS),我正在处理这个项目没有问题,而且我有一个团队也没有问题。
- 我试图重新安装我的
node
和npm
以及expo-cli
. - 我试图
rm -rf node_modules
和npm install
. - 我试图删除
package.lock.json
并再次npm install
。 - 我尝试为npm全局安装设置全局目录,并允许如此处所述
- 我尝试安装
nvm
节点版本管理器(我正在使用它 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
再次运行世博会
如果发现与某个目录或文件相关的任何其他错误,请导航到错误消息上的文件/目录并将其删除。因为它也应该属于root
用户。
我遇到了这个问题,因为我一直在本地使用cmd
,并在 Ubuntu WSL2 子系统中猛击。
我必须从 ubuntu 终端安装了一些软件包,所以除了从我的 WSL 主目录中删除.expo
文件之外,我还必须删除我的node_modules
文件,并从我的 windows-cmd 控制台运行npm install
。
先卸载 expo。 然后卸载 npm 并重新安装 npm 然后 expo
通常当您看到如下错误时:
未捕获的错误错误: 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: