NPM - не удалось заменить env в конфигурации: $ {NPM_TOKEN} - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь создать приложение реагирования, но при выполнении команды 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

но это не работает. В чем проблема?

Ответы [ 4 ]

0 голосов
/ 10 апреля 2019

Фактически правильное решение

Обновите конфигурацию развертывания CI:

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

Удалите эту строку из файла .npmrc:

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

Почему другие "решения "- это просто обходные пути

Я видел ответы здесь и в разделе на этот вопрос , которые рекомендуют просто удалить строку переменной или файл .npmrc полностью.

Дело в том, что файл .npmrc может не игнорироваться вашей системой VCS, и его изменение может привести к случайным добавлениям в хранилище вашего проекта.Кроме того, файл может содержать другие важные параметры.

Проблема в том, что .npmrc не позволяет использовать значения по умолчанию при настройке переменных среды.Например, если разрешен следующий синтаксис, проблема будет отсутствовать:

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

0 голосов
/ 11 декабря 2018

Первое возможное решение:

Простое решение: rm -f ./.npmrc (удаление файла .npmrc)

Второе возможное решение:

Однако, если вы не хотитеудалить файл, вы можете просто удалить эту строку кода в файле .npmrc.

строка кода: //registry.npmjs.org/:_authToken=${NPM_TOKEN} (удалить этот код)

Третье возможное решение

Сценарий наихудшего случая:

  • nano ~/.bash_aliases или nano ~/.bash_profile
  • добавить export NPM_TOKEN="XXXXX-XXXXX-XXXXX-XXXXX"
  • CTRL + X для выхода
  • Yсохранить
0 голосов
/ 31 января 2019

Если вы просто задали свой ~ / .profile впервые (OSX, Ubuntu) и добавили эту строку: export NPM_TOKEN = "XXXXX-XXXXX-XXXXX-XXXXX".Затем вы должны ввести эту строку в терминал позже:

source ~/.profile
0 голосов
/ 28 сентября 2018

Для пользователей Ubuntu, пришедших из Google:

  • нано ~ / .bash_aliases
  • export NPM_TOKEN = "PUT_YOUR_TOKEN_HERE"
  • CTRL + X для выхода
  • Y, чтобы сохранить
...