npm install / bower install 问题和不推荐使用 angular-phonecat 设置的模块

npm install / bower install issue and deprecated modules with angular-phonecat setup

我正在尝试 运行 npm install 在我的终端上作为 angular-phonecat 设置的一部分,按照 https://docs.angularjs.org/tutorial

上的说明

当我 运行 命令时,我遇到了已弃用模块的问题,并且在到达 bower 安装部分时出现错误。

有人知道如何更新已弃用的模块以避免警告以及如何修复 Bower 错误吗?

这是我收到的输出:

npm WARN deprecated tough-cookie@2.2.2: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
-
> fsevents@1.0.14 install /Users/Eamon/Documents/Scripting/Web Development/Learning/Javascript/Angularjs/angular-phonecat/node_modules/karma/node_modules/chokidar/node_modules/fsevents
> node-pre-gyp install --fallback-to-build

[fsevents] Success: "/Users/Eamon/Documents/Scripting/Web Development/Learning/Javascript/Angularjs/angular-phonecat/node_modules/karma/node_modules/chokidar/node_modules/fsevents/lib/binding/Release/node-v46-darwin-x64/fse.node" already installed
Pass --update-binary to reinstall or --build-from-source to recompile

> angular-phonecat@0.0.0 postinstall /Users/Eamon/Documents/Scripting/Web Development/Learning/Javascript/Angularjs/angular-phonecat
> bower install

bower EACCES        EACCES: permission denied, unlink '/Users/Eamon/.cache/bower/registry/bower.herokuapp.com/lookup/jquery_d223e'

Stack trace:
Error: EACCES: permission denied, unlink '/Users/Eamon/.cache/bower/registry/bower.herokuapp.com/lookup/jquery_d223e'
    at Error (native)

Console trace:
Error
    at StandardRenderer.error (/Users/Eamon/Documents/Scripting/Web Development/Learning/Javascript/Angularjs/angular-phonecat/node_modules/bower/lib/renderers/StandardRenderer.js:81:37)
    at Logger.<anonymous> (/Users/Eamon/Documents/Scripting/Web Development/Learning/Javascript/Angularjs/angular-phonecat/node_modules/bower/lib/bin/bower.js:110:26)
    at emitOne (events.js:77:13)
    at Logger.emit (events.js:169:7)
    at Logger.emit (/Users/Eamon/Documents/Scripting/Web Development/Learning/Javascript/Angularjs/angular-phonecat/node_modules/bower/lib/node_modules/bower-logger/lib/Logger.js:29:39)
    at /Users/Eamon/Documents/Scripting/Web Development/Learning/Javascript/Angularjs/angular-phonecat/node_modules/bower/lib/commands/index.js:48:20
    at _rejected (/Users/Eamon/Documents/Scripting/Web Development/Learning/Javascript/Angularjs/angular-phonecat/node_modules/bower/lib/node_modules/q/q.js:844:24)
    at /Users/Eamon/Documents/Scripting/Web Development/Learning/Javascript/Angularjs/angular-phonecat/node_modules/bower/lib/node_modules/q/q.js:870:30
    at Promise.when (/Users/Eamon/Documents/Scripting/Web Development/Learning/Javascript/Angularjs/angular-phonecat/node_modules/bower/lib/node_modules/q/q.js:1122:31)
    at Promise.promise.promiseDispatch (/Users/Eamon/Documents/Scripting/Web Development/Learning/Javascript/Angularjs/angular-phonecat/node_modules/bower/lib/node_modules/q/q.js:788:41)
System info:
Bower version: 1.7.9
Node version: 4.4.0
OS: Darwin 15.6.0 x64

npm ERR! Darwin 15.6.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v4.4.0
npm ERR! npm  v2.14.20
npm ERR! code ELIFECYCLE
npm ERR! angular-phonecat@0.0.0 postinstall: `bower install`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the angular-phonecat@0.0.0 postinstall script 'bower install'.
npm ERR! This is most likely a problem with the angular-phonecat package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     bower install
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs angular-phonecat
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! 
npm ERR!     npm owner ls angular-phonecat
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/Eamon/Documents/Scripting/Web Development/Learning/Javascript/Angularjs/angular-phonecat/npm-debug.log

我曾尝试搜索其他有类似问题的帖子,但 none 帮助我找到了解决方案:

我也尝试 运行ning sudo npm install 解决同样的问题。我感觉 Bower 安装问题是由于查看错误输出的 Bower 缓存设置造成的,但我不是 100% 确定。

有人在为 angular-phonecat 设置安装时遇到过类似的问题吗?

非常欢迎任何帮助。

非常感谢, 埃蒙

调查后发现 Bower 似乎存在权限问题,解决方法是 运行使用 sudo 单独安装 Bower:

sudo bower install --allow-root

但是,您不应将 sudo 与 bower 一起使用。如果您必须这样做,很可能是通过使用 sudo 安装或通过 sudo 安装您的第一个包时 ~/.cache 设置不正确。可以在此处找到有关此的更多信息:http://www.competa.com/blog/2014/12/how-to-run-npm-without-sudo/

相反,您应该通过 运行以下方式纠正所有权:

sudo chown -R $user ~/.npm
sudo chown -R $user ~/.config

要查找您的用户,您只需 运行 在命令行中输入以下命令:

$ whoami

如果你想对更广泛的组开放你也可以在chown命令中添加一个组。要找出您的用户属于哪个组,您可以键入以下命令:

$ groups

要在用户的同时设置组,只需将命令更改为以下内容并将 $user 和 $group 替换为您想要的用户和组:

sudo chown -R $user:$group ~/.npm
sudo chown -R $user:$group ~/.config

如果您在 npm 安装期间 运行 安装 Bower 时遇到如下问题之一:

EACCES: permission denied, open '/some/directory'
EACCES: permission denied, unlink '/some/directory'

您需要更改包含该文件的文件夹的权限才能成为您的用户:

sudo chown -R USER /some/directory

只需更改存储文件的文件夹,而不是文件本身。当您在此之后 运行 npm install 时,如果它需要安装任何在使用当前用户而不是使用 sudo 时遇到安装问题的 Bower 组件,它将起作用。

谢谢, 埃蒙

问题:您(用户)没有正确的目录权限集。

直接的出路是 运行 使用 sudo 安装 npm,但这可能会给你同样的错误,或者安装不正确。

AND 更改目录所有权不是一个好的选择,一个临时补丁。我正在回答这个问题,因为我觉得我对这个问题有一个更优雅的solution/suggestion。我多次遇到同样的问题,即 'npm install -g @angular/cli'。

卸载软件包并执行以下命令(按照提到的顺序)进行全新安装。


解决方案/建议:更改npm的默认目录(来自官方docs

在继续之前备份您的计算机。

(可选)如果安装错误,请先卸载:

npm uninstall <package-name>  # use sudo if you used it while installation
npm cache verify  # or, npm cache clean for npm version below 5.x.x 
  1. 为全局安装创建一个目录:

    mkdir ~/.npm-global

  2. 配置 npm 以使用新的目录路径:

    npm config set prefix '~/.npm-global'

  3. 打开或创建一个 ~/.profile~/.bash_profile 文件并添加此行:

    export PATH=~/.npm-global/bin:$PATH

  4. 返回命令行,更新系统变量,或重新启动终端:

    source ~/.profile

  5. (可选)测试:在不使用 sudo 的情况下全局下载包。

    npm install -g jshint