无法在本地应用程序上运行“ expo start”,权限问题

时间:2019-02-20 18:52:03

标签: node.js react-native npm expo linuxmint

  

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

上下文(环境)

  • Linux Mint 19.1肉桂
  • Expo v32
  • 本机应用程序
  • GitHub私有存储库(我从中克隆应用程序的地方)
  • 节点最新LTS(v10.15.1)
  • NPM v6.4.1
  • / \都使用NVM(节点版本管理器)

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时。

我很难相信这是一个操作系统问题,因为上周我在另一个操作系统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' }

如何复制它:

  • 安装/使用OS Linux Mint 19.1肉桂。
  • 安装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
  • 我试图按照here的权限为npm全局安装设置全局目录。
  • 我尝试安装nvm节点版本管理器,(并且我正在使用它的atm)。
  • 我试图chown myuser project-folder授予用户访问该文件夹的权限(也在.expo文件夹和node_modules文件夹上尝试过)
  • 我尝试chmod 777 and 755 and 655整个项目文件夹。
  • 我尝试运行带有expo start前缀的npm startsudo命令,但是sudo找不到exponpm都找不到。
  • 我试图删除存储库并再次使用git clone对其进行克隆。
  • 还有很多很多其他的东西。 (我也捕食过猎物)
  • 此外,您也不会看到SELinux的参与:

      

    ls -ld

         

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

因此,即使我在许多网站上看到此错误,也都没有我的上下文,这是我提出的问题。

2 个答案:

答案 0 :(得分:2)

我发现了问题!

主要原因是因为有一段时间,我使用sudo安装了与expo相关的内容,然后expo在另一个目录中创建了属于root用户的一些文件。不在我正在工作的项目文件夹中。

这是因为在expo的初始安装中,expo的初始文件显然是使用sudo安装的,因为该目录home/itspauloroberto/.expo中的文件以及该文件夹都由{{ 1}}(我使用root命令对其进行了检查,并以la -ls为所有者。)而不是我的用户root,这是错误的主要来源。

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

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

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

答案 1 :(得分:0)

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