最近我开始接触手机 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. Glide的 java.lang.RuntimeException: Expected instanceof GlideModule, but found:X.GlideModule@2e4554f

    问题一 在添加过混淆规则后,App打包的时候,发现报错了 java.lang.RuntimeException: Expected instanceof GlideModule, but found: ...

  2. 第五篇Scrum冲刺博客

    一.Daily Scrum Meeting照片 二.每个人的工作 成员 ItemID 已完成工作 明天计划完成的工作 遇到的困难 张鸿 o1 整合界面至游戏中 将其他剩余功能进行整合 游戏状态的切换 ...

  3. MongoDB- 简单操作命令

    MongoDB是基于集合操作的数据库 1.进入与退出 mongo / exit 2.库操作 显示所有库: show dbs; 查看当前所在库: db; 切换&使用某个库: use db_nam ...

  4. 24G的SSD有什么用

    有台12G内存,带24G的SSD的笔记本,系统自带WINDOWS8,最近感觉很慢,就动手把1T的硬盘升级到512的SSD. BIOS里面明明看到24G的SSD,Windows里面就消失了(应该是坏掉了 ...

  5. 【Shell基础】循环:for、while、until

    1.for循环 ..};do echo "for loop" done 2.while循环 be_s= en_s= while [ "$be_s" -le &q ...

  6. 查询本地电脑IP地址

    使用Windows+R键打开"运行"窗口,然后输入CMD进入命令提示窗口 进入命令窗口之后,输入:ipconfig/all 回车即可看到整个电脑的详细的IP配置信息

  7. FineUIMvc随笔(1)动态创建表格列

    声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. <FineUIMvc随笔>目录 FineUIMvc随笔(1)动态创建表格列 FineUIMvc随笔(2)怎样在控件中 ...

  8. python中使用redis发布订阅者模型

    redis发布订阅者模型: Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者,订阅者和Channel.发布者和订阅者都是Redis客户端,Channel则 ...

  9. 关于win7+VS2017环境下的opencv-contirb配置的一个坑

    问题出现背景: 由于课题需要用到SURF detector, 我依照网上的一下教程,把opencv-contrib的配置了一遍.但是,当我写了一个小demo来测试模块是否能正常使用的时候,程序能正常编 ...

  10. 个人jQuery的使用总结

    一.使用方法 参考内容有: http://www.w3school.com.cn/jquery/jquery_ref_events.asp http://www.cnblogs.com/zhangzi ...