node.js - 错误 : EACCES: permission denied, 取消链接 - 运行 $ ionic start 时

标签 node.js cordova ionic-framework npm

我刚刚开始使用 ionic,现在在运行 ionic 的早期阶段就遇到了阻碍。

我使用的操作系统:Linux Mint 18 Cinnamon 64 位

Node 版本:v10.0.0(从 NVM 安装,无需 root 访问权限)

NPM 版本:5.6.0(从 NVM 安装,无需 root 访问权限)

我正在关注本教程: https://coursetro.com/posts/code/36/Installing-Ionic-2-&-Starting-a-Project

我通过以下方式安装 ionic :

$ npm install -g ionic cordova

它返回:

home/brian/.nvm/versions/node/v10.0.0/bin/cordova -> /home/brian/.nvm/versions/node/v10.0.0/lib/node_modules/cordova/bin/cordova
/home/brian/.nvm/versions/node/v10.0.0/bin/ionic -> /home/brian/.nvm/versions/node/v10.0.0/lib/node_modules/ionic/bin/ionic
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="97f1e4f2e1f2f9e3e4d7a6b9a5b9a4" rel="noreferrer noopener nofollow">[email protected]</a> (node_modules/ionic/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0c6a7f697a6962787f4c3d223e223f" rel="noreferrer noopener nofollow">[email protected]</a>: wanted {“os”:“darwin”,“arch”:“any”} (current: {“os”:“linux”,“arch”:“x64”})

    <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="caa9a5b8aea5bcab8af2e4fae4fa" rel="noreferrer noopener nofollow">[email protected]</a>
    <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a3cacccdcac0e3908d91938d93" rel="noreferrer noopener nofollow">[email protected]</a>
    added 677 packages in 16.679s

然后我检查了 cordova 和 ionic 是否通过 $ ionic -v 安装,它返回

3.20.0

我猜这意味着尽管有警告消息,但仍安装了 ionic。

然后我尝试运行教程的下一步:

$ ionic start firstProject blank

然后出现这个错误:

? The directory firstProject contains file(s) that could conflict. Would you like to overwrite the directory with this new project? Yes
:heavy_multiplication_x: Creating directory ./firstProject - failed!
Error: EACCES: permission denied, unlink ‘/home/brian/firstProject/.editorconfig’

我尝试通过以下方式授予该路径权限:

$ sudo chown -R brian /home/brian/firstProject/.editorconfig

但是,当我运行 $ ionic start firstProject Blank

时,同样的错误仍然存​​在

我还尝试使用 root $ sudo ionic start firstProject Blank 运行命令,但它返回

sudo: ionic: command not found.

我尝试安装没有全局属性的ionic,但结果是无法安装,因为npm WARN option SKIPPING OPTIONAL DEPENDENCY: [email protected]

有人能解决这个问题吗?任何帮助,将不胜感激。谢谢!

最佳答案

感谢 Nidhin 的回复,我刚刚解决了问题。

我意识到文件夹firstProject被锁定了。因此,如果您想使用 Node 和 npm,我的建议是最好使用 NVM 安装它,这样就不用使用 root 访问权限安装它


让我告诉您如何重现问题

因此,在我实际从 NVM( Node 版本管理器)安装 Node 和 NPM 之前,我首先使用以下命令( I followed this reference )使用 sudo (根访问权限)从包管理器安装它:

$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - 
$ sudo apt-get install -y nodejs

这会导致我接下来的所有 npm 命令都应该使用 sudo (用于 root 访问)。

所以,当我运行此命令( following this tutorial )时:

$ npm install -g ionic cordova

我无法安装它:

npm WARN checkPermissions Missing write access to /usr/lib/node_modules

我需要使用 root 访问权限来安装它:

$ sudo npm install -g ionic cordova

这使得 ionic 和 cordova 始终在 root 访问权限下运行——我认为你应该避免它!

因此,从这里继续,我按照教程运行下一个命令:

$ ionic start firstProject blank

这使得文件夹/firstProject/需要 root 访问权限(参见附图)。继续使用 sudo 并不是一个好主意,因为有时 ionic 在运行其进程时会运行另一个命令。 Folder locked

总而言之,使用 sudo 安装 Node 和 NPM 并不是一个好主意。我还不知道使用 sudo 是否有充分的理由,如果你知道为什么,请回复评论。


根据我的情况,

我实际上做得正确:

  1. 从 NVM 安装 Node 和 NPM
  2. 无需 sudo(root 访问权限)即可安装 ionic 和 cordova
  3. 只需运行 ionic start 命令,例如ionic 首先启动项目空白; 但首先请确保不存在具有此名称的现有锁定文件夹 (firstProject)。

希望能帮助解决您类似的问题。

关于node.js - 错误 : EACCES: permission denied, 取消链接 - 运行 $ ionic start 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50297528/

相关文章:

android - Phonegap(非 Cordova)3.5 示例应用程序未启动设备就绪

javascript - 如何在cordova中使用硬件意图

javascript - 切换选项卡时 ionic 后退按钮显示不正确

javascript - 用于 Angular MPA 的 Ionic.js 或 Appgyver 类固醇

node.js - 验证socket.io时无法添加握手参数

javascript - 如何检查 js 代码是在 Node 服务器上还是在客户端上运行

javascript - 使用 Chai.js 测试失败

javascript - 在 Cordova 项目中更改本地主机的端口号

javascript - 读取 2 个字节作为整数

android - 从 Cordova plugin.xml 添加 android :name ="something" to AndroidManifest. xml "application"标签