NPM - 設定内の env の置き換えに失敗しました: ${NPM_TOKEN} 質問する

NPM - 設定内の env の置き換えに失敗しました: ${NPM_TOKEN} 質問する

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

しかし、動作しません。何が問題なのでしょうか?

ベストアンサー1

実際に適切な解決策

CI デプロイメント構成を更新します。

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

ファイルから次の行を削除します.npmrc:

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

ビルド構成の例

このソリューションが実際に使用されている様子は、私の GitHub リポジトリの 1 つでご覧いただけます。ラムダシミュレーター

暗号化された環境変数は NPM トークンです。

他の「解決策」が単なる回避策である理由

私はここで答えを見ましたこの質問変数設定行または.npmrcファイル全体を削除することをお勧めします。

ただし、この.npmrcファイルは VCS システムによって無視されない可能性があり、変更するとプロジェクトのリポジトリに誤ってプッシュされる可能性があります。また、このファイルには他の重要な設定が含まれている場合もあります。

ここでの問題は、.npmrc環境変数を設定するときにデフォルトが許可されないことです。たとえば、次の構文が許可されていれば、問題は発生しません。

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

おすすめ記事