最近我开始接触手机 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. java或Jmeter实现两个日期相加减(2003-06-01-2003-05-01)

    在beanshell中写入如下代码, import java.io.FileInputStream; SimpleDateFormat myFormatter = new SimpleDateForm ...

  2. 大整数相乘问题总结以及Java实现

    最近在跟coursera上斯坦福大学的算法专项课,其中开篇提到了两个整数相乘的问题,其中最简单的方法就是模拟我们小学的整数乘法,可想而知这不是比较好的算法,这门课可以说非常棒,带领我们不断探索更优的算 ...

  3. MongoDB语法与现有关系型数据库SQL语法比较

    MongoDB语法            MySql语法 db.test.find({'name':'foobar'})             <==>          select ...

  4. egg.js与mysql的结合使用,以及部署事项

    最近使用egg.js写了一个小项目练手,主要用来封装接口以及代理接口.进入正题: egg搭建以及各项配置 可以详见官方文档:https://eggjs.org,这里简单描述一下: 1.直接使用脚手架快 ...

  5. 360 随身 WiFi3 在 Ubuntu 14.04 下的使用

    由于 360 随身 WiFi3 采用 Mediaek 代号 0e8d:760c 的芯片,目前没有官方或第三方 Linux 驱动,所以造成 Linux 用户的诸多困扰. 本文给出一个迂回的解决方案:在 ...

  6. Redis报错 Server started, Redis version 3.2.13 Can't handle RDB format version 9 Fatal error loading the DB: Invalid argument. Exiting.

    在/usr/local/etc 目录下 运行 redis-server 命令重启 redis 服务发现报错,报错信息如下: 如上报错的含义是:当前的redis的版本是3.2.13版本,无法处理 ver ...

  7. DRF限制访问频次

    官方文档:https://www.django-rest-framework.org/api-guide/throttling/ 1.什么场景下需要限制访问频次呢? 1)防爬虫:爬虫可能会在短时间内大 ...

  8. 译注(3): NULL-计算机科学上最糟糕的失误

    原文:the worst mistake of computer science 注释:有些术语不知道怎么翻译,根据自己理解的意思翻译了,如有不妥,敬请提出:) 致谢: @vertextao @fra ...

  9. Jmeter单个长连接发送多个Sample

    Mark自:https://blog.csdn.net/lykangjia/article/details/16337505 1. 线程组,在我们测试方案里面,每个线程模拟一个用户,执行用户的登录.等 ...

  10. centos下安装Vmware-tools时出现的问题

    今天装了centos,想共享一个文件,需要安装Vmware-tools. 正常的步骤: 安装Vmware-tools 1.挂载VMwareTools光驱.虚拟机选项栏中选[虚拟机]-->[安装v ...