gpt4 book ai didi

node.js - NPM - 无法在配置 : ${NPM_TOKEN} 中替换 env

转载 作者:IT老高 更新时间:2023-10-28 23:23:44 34 4
gpt4 key购买 nike

我正在尝试构建一个 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

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

最佳答案

其实正确的解决方案

更新您的 CI 部署配置:

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

.npmrc 文件中删除这一行:

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

示例构建配置

您可以在我的一个 GitHub 存储库中看到实际使用的这个解决方案:https://github.com/Jezorko/lambda-simulator/blob/5882a5d738060c027b830bcc2d58824c5d27942b/.github/workflows/deploy.yml#L26-L27

加密的环境变量是一个 NPM token 。

为什么其他“解决方案”只是变通方法

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

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

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

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

关于node.js - NPM - 无法在配置 : ${NPM_TOKEN} 中替换 env,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52015748/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com