最近我开始接触手机 app 的编写,公司用到了 Nativescript。当我下载了公司的项目后,在配置时出现了不少的问题,其中出现概率最高的就是 EACCES: permission denied 错误。这类错误在 Nativescript 的官网教程中有特别指出,我也按照其中的提示修改文件权限,但还是有很多时候尽管你使用 sudo,依然会出现权限问题。本文将介绍我是如何解决这个问题的,这个问题也不仅仅出现在使用 Nativescript 时,只要你 npm install 时出现的 EACCES: permission denied 错误都可以用以下的解决方案。(欢迎大家留言指出问题,或是解决问题后点个赞)

2019年4月10日更新:之后提到的网站中的内容有所变动,我根据变动修改了前两个截图,后面的文字内容也稍有变动。该网站中提到的方法比我当时解决问题时更多些,大家如果英语水平好的话建议自行研究一下内容,也许能找到更合适的解决方法。我就提供我当时的解决方法的过程记录。

我 clone 了公司项目后,需要执行一系列 npm 的指令进行项目的配置,基本上每个 npm的执行都需要加上 sudo 才能进行一部分,中间还会出现 EACCES: permission denied 错误,这个时候,你首先可以使用 sudo chown -R $(whoami) PATH 直接修改你填写的路径下的所有子文件夹的权限为你可以读取和修改,之后就不需要再用sudo了。

然而这个方法并没有解决我的问题,我在执行 npm platform add ios 时一直有一个错误 command npm --silent --save-exact --save failed with exit code  ,然后我意识到我依然没有成功的修改需要修改的权限,主要是这个文件夹:/Users/NAME/.npm-global/lib/node_modules。

然后我找到了 nvm 官方网站教程中为了预防此类权限错误而给的一个文章链接。最开始时我尝试了这篇文章中的第二种方案(Manually change npm’s default directory),其实我直接没注意到还有第一种方案(Reinstall npm with a node version manager),因为第二种方案直接放出来了代码比较醒目。

第一种方案(Reinstall npm with a node version manager)就是本文介绍的重点了,也是我认为最好的解决方法。(点开前面提到的文章链接,就可看到如下图所示)

以下为具体的分步骤讲解:

1. 前面这个链接中的这个方法有一小段文字说明,其中给的链接("Downloading and installing Node.js and npm")指向另一章节,当你点开之后,需要将页面拉至下方 Using a version manager to install Node.js and npm 处,你可以直接查找这段文字。(以下为截图)

2. 选择你对应系统的相关链接,我是 mac 系统,选择了箭头所指的链接,点击后你会看到:

3. 上面页面里解释的很详细,在执行完 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash 后,终端会有提示说你可以重启终端或者执行以下语句使 nvm 可用,我尝试过重启,nvm 并没有配置好,所以还是需要将给出的提示命令全部复制执行一下,然后执行 nvm --version ,如果输出了版本型号则成功了。

4. 最开始提到的第一种方法是需要安装 nvm 然后再重装 Node.js,现在我们已经安装好了 nvm,那么就需要执行 nvm install node ,终端会提示这与之前提到的第二种方法里设置的 prefix 冲突,需要执行某某语句来删除这个 prefix,你就按照提示删除(我没截图并且关了窗口,所以只能描述大概记得的)。

5. 需要再次执行  npm install 时,如果依然出现 EACCES: permission denied 在项目的 /node_modules 下,则删除项目下 node_modules 文件夹,然后再执行  npm install 重新生成 node_modules 文件夹应该就没有问题了。

小结

两个关键命令 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash 和  sudo chown -R $(whoami) /Users/$(whoami)/.npm-global/lib/node_modules 。后面这个命令只是针对个别情况,大家按个人需求判断是否需要执行。如果没看懂我写的,建议再仔细看看我给出的英文官方网站。

npm install 时出现的 EACCES: permission denied 错误的可能有效的解决方案的更多相关文章

  1. 解决华为手机图片选择无效及产生的open failed: EACCES (Permission denied)错误

    在华为手机上调起图片选择时原来的效果如下 原来的代码是 Intent intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT ...

  2. npm安装node-sass失败,EACCES: permission denied

    增加--unsafe-perm,即 sudo npm install node-sass --unsafe-perm --save-dev 成功安装node-sass

  3. VSCODE更改文件时,提示EACCES permission denied的解决办法(mac电脑系统)

    permission denied:权限问题 具体解决办法: 1.在项目文件夹右键-显示简介-点击右下角解锁 2.权限全部设置为读与写 3.最关键一步:点击"应用到包含的项目",这 ...

  4. Android 6.0以后的版本报错:open failed: EACCES (Permission denied)

    Android 6.0以后的版本报错:open failed: EACCES (Permission denied) 在开发项目中,遇见要进行文件操作,遇见Caused by: android.sys ...

  5. npm install Error: EACCES: permission denied, mkdir

    今天研究Electron的时候,全局安装运行 npm install electron -g时侯,报下面的错误: Error: EACCES: permission denied, mkdir '/U ...

  6. EACCES: permission denied,mkdir … npm install 安装依赖问题解决

    强哥最近在用hugeGraph图库做二次开发的时候,在打包的时遇到前端项目打包失败的问题: cwebp-bin@4.0.0 postinstall /home/hugegraph/my-hugegra ...

  7. npm install 报错,提示`gyp ERR! stack Error: EACCES: permission denied` 解决方法

    m install 报错,提示gyp ERR! stack Error: EACCES: permission denied 猜测可能是因为没有权限读写,ls -la看下文件权限设置情况 [root@ ...

  8. npm安装报错:Error: EACCES: permission denied

    报错如下: sudo npm i webpack -g /Users/xesfe/.npm-global/bin/webpack -> /Users/xesfe/.npm-global/lib/ ...

  9. Error: EACCES: permission denied, mkdir '......node-sass/build'错误解决方案

    安装node-sass时出现一下错误: gyp ERR! configure error gyp ERR! stack Error: EACCES: permission denied, mkdir ...

随机推荐

  1. 章节十、5-CSS---用CSS 通配符定位元素

    以下演示操作以该网址中的输入框为例:https://learn.letskodeit.com/p/practice 一.css样式中有三种通配符“^.$.*” 语法:tag[attribute< ...

  2. MATLAB 音响系统工具箱

    音响系统工具箱 设计和测试音频处理系统 发行说明 pdf文档 音频系统工具箱™为音频处理系统的设计,仿真和桌面原型设计提供了算法和工具.它支持低延迟信号流式传输到音频接口,交互式参数调整以及数字音频工 ...

  3. Centos6搭建vsftpd

    CentOS 6.5下安装Vsftp,虚拟用户一.安装:1.安装Vsftpd服务相关部件:[root@localhost ~]# yum install vsftpd*Loaded plugins: ...

  4. BitSet: 有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来?

    package common; import java.util.ArrayList; import java.util.BitSet; import java.util.List; import j ...

  5. matlab导入txt数据画图

    因为最近需要观察txt保存的一堆数据,则需要使用这些数据画图.强大的matlab分分钟解决了. 实例数据:data.txt 步骤: ①打开matlab -> HOME(主页) -> Imp ...

  6. ABP之session

    ABP提供了一个IAbpSession接口,可以在不使用ASPNET的session的情况下获取当前用户和租户.IAbpSession还被ABP中的其他结构(如设置和授权系统)完全集成和使用. 注入s ...

  7. ModuleNotFoundError: No module named 'redis'

    在安装过Redis后,通过Python程序导入redis时,遇到一个“ModuleNotFoundError: No module named redis”错误,网上查了下原因,解决办法如下: Pyt ...

  8. Divide Candies CodeForces - 1056B (数学)

    Arkady and his friends love playing checkers on an n×nn×n field. The rows and the columns of the fie ...

  9. sqlalchemy 外键

    建表 from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() from sqlalchemy ...

  10. Hexo之傻瓜攻略

    Hexo搭建个人技术博客的网站,从零开始流程 搭建篇 必备Node.js环境 安装配置hexo: npm install -g hexo 安装cli hexo init 初始化hexo npm ins ...