npm安装全局的 -g 依赖失败 没权限问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了npm安装全局的 -g 依赖失败 没权限问题相关的知识,希望对你有一定的参考价值。
参考技术A npm安装全局的 -g 依赖失败 没权限问题 解决报错:Error: EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs\node_modules\.staging'
如下图报错
解决:主要是没权限的问题 不知道为什么node没权限
使用 Windows PowerShell 以 管理员身份运行 这个Windows PowerShell
再npm想要的 -g 依赖 就可以成功了
这里全局安装cnpm 和 vue/cli
npm install -g cnpm --registry=https://registry.npm.taobao.org
npm install -g @vue/cli
NPM 注册表安装在非注册表依赖项上失败
【中文标题】NPM 注册表安装在非注册表依赖项上失败【英文标题】:NPM registry install fails on non-registry dependencies 【发布时间】:2019-01-17 03:10:46 【问题描述】:我正在尝试通过注册表安装我的 Ionic 应用程序及其依赖项。
我尝试使用npm i --loglevel verbose
来实现这一点,而我的~/.npmrc
看起来像这样:
//nexus.OMMITED.com/repository/:_auth=OMMITED
registry=http://nexus.OMMITED.com/repository/npm-all
always-auth=true
当查看命令运行时,它似乎运行得很好,直到我们遇到其他非注册表依赖项,突然我遇到了授权错误。
这里是命令的粘贴:https://hasteb.in/hejigopo.sql
如您所见,在这种情况下,它在 @angular/http@6.1.2
上失败,但此变量介于随机 @angular
依赖项或 @ionic-native
之间
到目前为止我所尝试的...
-
将
always-auth
更改为true
或false
以超级用户身份运行
尝试不同的令牌
使用_authToken
代替_auth
Google,很多,但事实证明我的问题非常独特。
npm login --registry=http://nexus.OMMITED.com/repository/npm-all
与 --auth=TOKEN_OMITTED
和 --authToken=TOKEN_OMITTED
其中 npm 告诉我 npm WARN invalid config auth-type="TOKEN_OMITTED"
并提示输入用户名,但我的用户名是一个引发此错误的电子邮件地址:npm WARN Name may not contain non-url-safe chars
只是无限地继续提示输入另一个用户名。
【问题讨论】:
我注意到您的 npmrc 文件的第一行似乎是使用//
的注释。根据npmrc docs cmets 不要将//
用于 cmets,而是使用#
或;
。不确定这会如何影响它,但可以尝试改变一些东西。
此外,第一行是否尝试为 url 的范围设置 _auth
?您应该尝试将 _auth
设置为您的令牌,看看是否有效。如果您需要确定范围,我在之前的评论中链接的文档似乎表明要确定您所做的事情@scope:_auth=...
,所以这是可以尝试的。 (如果您好奇,可以查看npm scope 上的一些文档)
【参考方案1】:
我不知道如何或为什么,但如果我在命令中指定完整的注册表,不知何故现在它可以工作了:
npm --registry=http://nexus.OMITTED.com/repository/npm-all/ install
而我的~/.npmrc
看起来像这样:
//nexus.OMITTED.com/repository/:_authToken=OMITTED
registry=http://nexus.OMITTED.com/repository/npm-all/
_auth=OMITTED
email=bob@OMITTED.nl
这对我来说毫无意义,但我很高兴它有助于改变。
如果有人最终为此写了一个正确的答案,说明为什么会这样,它是如何工作的,以及为什么正常的方式不起作用,那么我很乐意接受它作为答案并奖励赏金。 em>
【讨论】:
【参考方案2】:您希望在 Nexus Repo 3 中使用 npm login:
https://help.sonatype.com/display/NXRM3/Node+Packaged+Modules+and+npm+Registries#NodePackagedModulesandnpmRegistries-AuthenticationUsingRealmandLogin
并确保在 Nexus UI 的“security/realms”下启用了 npm 持有者令牌领域。
也就是说,错误是 403,而不是 401。这意味着您因权限而被拒绝。我建议检查 nexus request.log 并确保 403 来自 Nexus。它们可能来自您的 http 代理服务器。如果它们来自 Nexus,则意味着用户已通过身份验证,但在 nexus 中没有从该存储库下载的权限。
【讨论】:
使用npm login
需要我输入一个用户名,我的用户名是一个电子邮件地址,它看起来有 url-unsafe-characters,因此它不允许我进一步。我还尝试通过在我的令牌后面附加一个--auth
或--authToken
参数来添加我的令牌作为参数,但这被证明是平安无事的。
使用--auth
的命令伴随的错误是:npm WARN invalid config auth-type="MY_TOKEN",
` 由于明显原因省略了令牌。当我使用--authToken
时,它只会再次提示我输入用户名。
请注意,403
错误代码 also 似乎是“随机的”,有时是 403
,有时是 401
。以上是关于npm安装全局的 -g 依赖失败 没权限问题的主要内容,如果未能解决你的问题,请参考以下文章