最近我开始接触手机 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. 测者的测试技术手册:智能化测试框架EvoSuite的一个坑以及填坑方法

    问题 最近在不断地学习和探索EvoSuite框架的时候,在生产JUnit单元测试框架后,出现如下问题: Exception: Caused by: org.evosuite.runtime.TooMa ...

  2. golang 实现HTTP代理和反向代理

    正向代理 package main import ( "fmt" "io" "net" "net/http" " ...

  3. 一起刷LeetCode

    题目列表: 题目 解答 26. 删除排序数组中的重复项 https://www.cnblogs.com/powercai/p/10791735.html 25. k个一组翻转链表 https://ww ...

  4. batch 常用命令

    1 echo 和 @ 回显命令 @ # 关闭单行回显 echo off # 从下一行开始关闭回显 @echo off # 从本行开始关闭回显,一般批处理第一行都是这个 echo on # 从下一行开始 ...

  5. 关于当前Web前端技术的一些感悟和笔记

    最近这些年,随着前端应用技术突飞猛进,产生了很多新的前端框架,当然也引入了数不胜数的前端技术概念,前端不在是早期Web Form的拖拉处理方式,也不再是Ajax+HTML那么简单,随着前端技术的发展, ...

  6. 详解WTL应用向导

    之前向 VS2019 中添加了 WTL 应用向导,今天来分析下该应用向导安装的相关文件,最终达到拷贝相关文件到 VS2019 的相应目录中即可直接使用 WTL 应用向导的目的. 在 VS2017 之前 ...

  7. git 拉取远程分支到本地

    步骤: 1.新建一个空文件,文件名为hhhh 2.初始化 git init 3.自己要与origin master建立连接(下划线为远程仓库链接) git remote add origin git@ ...

  8. Flutter内置ICON

    由于有时打不开flutter的icon官网 https://material.io/tools/icons/?style=baseline 截图存下icon 如果看不清  Ctrl +   恢复Ctr ...

  9. P3373 【模板】线段树 2

    线段树的模板,但是还应注意维护乘标记,乘法的优先级大于加法,一定记得还要取模. #include<bits/stdc++.h> using namespace std; ; struct ...

  10. MyBatis-Plus

    一.通用SQL 1.简介:(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 2.定义Javabean中成员变量所使用的的类型: ...