AngularJS手机目录应用中的npm start问题

4

我下载了AngularJS phonecat应用程序并全局安装了bower、http-server、karma和protractor。但是当我进入代码目录并尝试运行'npm start'时,它会执行'npm install'并显示以下错误:

angular-phonecat@0.0.0 prestart /Users/twer/angular-phonecat

npm install

在开始之前,先执行 npm install 以获取所需的依赖库。

警告:无法锁定 '/Users/twer/.npm/_locks/bower-d21e2b2886728075.lock',错误码为 EACCES。 npm WARN locking 错误详细信息如下: { [Error: EACCES, open '/Users/twer/.npm/_locks/bower-d21e2b2886728075.lock'] npm WARN locking errno: -13, npm WARN locking code: 'EACCES', npm WARN locking path: '/Users/twer/.npm/_locks/bower-d21e2b2886728075.lock' } npm ERR! Darwin 13.4.0 npm ERR! argv "node" "/usr/local/bin/npm" "install" npm ERR! node v0.12.2 npm ERR! npm v2.7.4

警告:尝试解锁未锁定的模块 '/Users/twer/angular-phonecat/node_modules/bower'。 npm WARN locking 无法锁定 '/Users/twer/.npm/_locks/http-server-0dbc63e1ce281434.lock',错误码为 EACCES。npm WARN locking 错误详细信息如下: { [Error: EACCES, open '/Users/twer/.npm/_locks/http-server-0dbc63e1ce281434.lock'] npm WARN locking errno: -13, npm WARN locking code: 'EACCES', npm WARN locking path: '/Users/twer/.npm/_locks/http-server-0dbc63e1ce281434.lock' } npm ERR! Darwin 13.4.0 npm ERR! argv "node" "/usr/local/bin/npm" "install" npm ERR! node v0.12.2 npm ERR! npm v2.7.4

警告:尝试解锁未锁定的模块 '/Users/twer/angular-phonecat/node_modules/http-server'。 npm WARN locking 无法锁定 '/Users/twer/.npm/_locks/shelljs-e4f96e79494ea210.lock',错误码为 EACCES。npm WARN locking 错误详细信息如下: { [Error: EACCES, open '/Users/twer/.npm/_locks/shelljs-e4f96e79494ea210.lock'] npm WARN locking errno: -13, npm WARN locking code: 'EACCES', npm WARN locking path: '/Users/twer/.npm/_locks/shelljs-e4f96e79494ea210.lock' } npm ERR! Darwin 13.4.0 npm ERR! argv "node" "/usr/local/bin/npm" "install" npm ERR! node v0.12.2 npm ERR! npm v2.7.4

警告:尝试解锁未锁定的模块 '/Users/twer/angular-phonecat/node_modules/shelljs'。 npm WARN locking 无法锁定 '/Users/twer/.npm/_locks/karma-e8390a258c010e78.lock',错误码为 EACCES。npm WARN locking 错误详细信息如下: { [Error: EACCES, open '/Users/twer/.npm/_locks/karma-e8390a258c010e78.lock'] npm WARN locking errno: -13, npm WARN locking code: 'EACCES', npm WARN locking path: '/Users/twer/.npm/_locks/karma-e8390a258c010e78.lock' } npm ERR! Darwin 13.4.0 npm ERR! argv "node" "/usr/local/bin/npm" "install" npm ERR! node v0.12.2 npm ERR! npm v2.7.4

警告:尝试解锁未锁定的模块 '/Users/twer/angular-phonecat/node_modules/karma'。 npm WARN locking 无法锁定 '/Users/twer/.npm/_locks/protractor-a03b9e77140a9911.lock',错误码为 EACCES。npm WARN

我该如何修复它?提前感谢。

1
看起来你以前使用 sudo 命令安装了一些代码,从而创建了属于 root 用户的文件。尝试执行以下命令:sudo chown -R $USER /Users/twer/.npm/ - robertklep
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - kristin
1个回答

7
这些错误表示npm由于权限不正确,无法访问目录/Users/twer及其子目录。

您想使用自己的用户权限运行npm,因此请通过更改所有权来设置它们:

chown -R $USER <directory>

或者

chown -R `whoami` <directory>

-- 两个命令都是相同的,其中<directory>是:
  • 本地安装的用户主目录(/Users/twer);
  • 非系统软件包的机器目录,/usr/local或者npm尝试使用的任何顶级目录,在您看到的错误消息中,您可能需要在这种情况下在命令前加上sudo

这里的选项-R是用于递归设置所有子目录的正确所有权,这正是您想要的。

您希望避免sudo运行npm,正如npm创建者Isaac Schlueter所建议的那样:

我强烈建议不要使用sudo进行软件包管理!软件包可以运行任意脚本,这使得sudo软件包管理器命令就像割草一样安全。当然,它很快,肯定能穿过任何障碍,但您实际上可能希望该障碍留在那里。


如果有人需要帮助-仅我的Mac OS上的$ HOME / _locks目录是由root拥有的。一定使用了sudo ..更改所有权,问题解决! - LNI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接