NPM-无法替换配置中的环境:$ {NPM_TOKEN}

时间:2018-08-25 09:15:52

标签: node.js reactjs npm node-modules

我正在尝试构建一个React应用,但是当我执行命令npm -i时,出现以下错误:

Error: Failed to replace env in config: ${NPM_TOKEN}
    at /usr/local/lib/node_modules/npm/lib/config/core.js:415:13
    at String.replace (<anonymous>)
    at envReplace (/usr/local/lib/node_modules/npm/lib/config/core.js:411:12)
    at parseField (/usr/local/lib/node_modules/npm/lib/config/core.js:389:7)
    at /usr/local/lib/node_modules/npm/lib/config/core.js:330:24
    at Array.forEach (<anonymous>)
    at Conf.add (/usr/local/lib/node_modules/npm/lib/config/core.js:328:23)
    at ConfigChain.addString (/usr/local/lib/node_modules/npm/node_modules/config-chain/index.js:244:8)
    at Conf.<anonymous> (/usr/local/lib/node_modules/npm/lib/config/core.js:316:10)
    at /usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:78:16
/usr/local/lib/node_modules/npm/lib/npm.js:61
      throw new Error('npm.load() required')
      ^

Error: npm.load() required
    at Object.get (/usr/local/lib/node_modules/npm/lib/npm.js:61:13)
    at process.errorHandler (/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:205:18)
    at process.emit (events.js:182:13)
    at process._fatalException (internal/bootstrap/node.js:448:27)

我正在使用MacOS High Sierra。我尝试使用以下命令将NPM_TOKEN设置为环境变量:

set -x NPM_TOKEN = xyz

但是它不起作用。 有什么问题吗?

11 个答案:

答案 0 :(得分:8)

第一个可能的解决方案:

简单的解决方案:rm -f ./.npmrc(删除.npmrc文件)

第二种可能的解决方案:

但是,如果您不想删除文件,则只需删除.npmrc文件中的这一行代码即可。

代码行://registry.npmjs.org/:_authToken=${NPM_TOKEN}(删除此代码)

第三种可能的解决方案

最坏的情况:

  • nano ~/.bash_aliasesnano ~/.bash_profile
  • 添加export NPM_TOKEN="XXXXX-XXXXX-XXXXX-XXXXX"
  • CTRL + X退出
  • 要保存

答案 1 :(得分:2)

在IDE(如WebStorm)中运行npm install是我的问题。我将NPM_TOKEN环境变量添加到.bash_profile并重新启动了终端,但没有重新启动我的IDE!直到我也重新启动它,IDE才对环境进行更改。

答案 2 :(得分:2)

我的情况是将 .zsh(或 .bash_profile)内的令牌导出移至文件顶部解决了该问题,因为它初始化太晚了之前。

答案 3 :(得分:1)

对于来自Google的Ubuntu用户:

  • nano〜/ .bash_aliases
  • export NPM_TOKEN =“ PUT_YOUR_TOKEN_HERE”
  • CTRL + X退出
  • 要保存

答案 4 :(得分:1)

如果您是第一次设置〜/ .profile(OSX,Ubuntu)并添加以下行:export NPM_TOKEN =“ XXXXX-XXXXX-XXXXX-XXXXX”。 然后,您必须在之后将以下行输入到终端:

source ~/.profile

答案 5 :(得分:1)

实际上是正确的解决方案

更新您的CI部署配置:

npm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}"
npm publish

.npmrc文件中删除此行:

//registry.npmjs.org/:_authToken=${NPM_TOKEN}

为什么其他“解决方案”仅仅是解决方法

我在这里和this question下都看到了答案,建议您完全删除变量设置行或.npmrc文件。

事实是,.npmrc文件可能不会被VCS系统忽略,对其进行修改可能会导致意外推送到项目存储库。此外,该文件可能包含其他重要设置。

这里的问题是设置环境变量时.npmrc不允许使用默认值。例如,如果允许使用以下语法,则该问题将不存在:

//registry.npmjs.org/:_authToken=${NPM_TOKEN:-undefined}

答案 6 :(得分:1)

以下对我有用。我不得不放置

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

在我指定的行之后

export NPM_TOKEN='mytoken'

答案 7 :(得分:1)

https://www.runoob.com/linux/linux-shell-variable.html 替换

'//registry.npmjs.org/:_authToken=${NPM_TOKEN}'

'//registry.npmjs.org/:_authToken='${NPM_TOKEN}

答案 8 :(得分:0)

就我而言,我只是将 export NPM_TOKEN 添加到 ~/.bashrc export NPM_TOKEN=60______-69__-44__-be__-2f__________ 这是用于 bash Ubuntu 20.04

答案 9 :(得分:0)

我也遇到了这个问题,但是当我在 Heroku 上推送我的 repo 时我找到了解决方案,所以我注意到 Heroku 运行命令 react-script start 或 build

//registry.npmjs.org/:_authToken=${NPM_TOKEN}

所以这个语法没有给出错误但是当我在我的系统中使用相同的语法并运行它给我的命令时。 因为通常当我们在我们的系统中运行时,我们使用 cmd npm 或 yarn 但如果您使用 react-script 那么它不会给出错误

答案 10 :(得分:0)

我在 Gitlab 中尝试设置 CI/CD 作业时遇到了这个问题。我最终发现错误是因为抛出错误的变量被设置为受保护的变量。

我在“设置”>“CI/CD”>“变量”下对其进行了更改。