Failed to replace env in config: ${INPUT_TOKEN}
See original GitHub issueI get the following error when using this action as github workflow using self hosted runner. It doesn’t fail the build and it happens to all npm commands in the job.
Run npm ci
Error: Failed to replace env in config: ${INPUT_TOKEN}
at /home/ubuntu/actions-runner/_work/_tool/node/14.13.0/x64/lib/node_modules/npm/lib/config/core.js:415:13
at String.replace (<anonymous>)
at envReplace (/home/ubuntu/actions-runner/_work/_tool/node/14.13.0/x64/lib/node_modules/npm/lib/config/core.js:411:12)
at parseField (/home/ubuntu/actions-runner/_work/_tool/node/14.13.0/x64/lib/node_modules/npm/lib/config/core.js:389:7)
at /home/ubuntu/actions-runner/_work/_tool/node/14.13.0/x64/lib/node_modules/npm/lib/config/core.js:330:24
at Array.forEach (<anonymous>)
at Conf.add (/home/ubuntu/actions-runner/_work/_tool/node/14.13.0/x64/lib/node_modules/npm/lib/config/core.js:328:23)
at ConfigChain.addString (/home/ubuntu/actions-runner/_work/_tool/node/14.13.0/x64/lib/node_modules/npm/node_modules/config-chain/index.js:244:8)
at Conf.<anonymous> (/home/ubuntu/actions-runner/_work/_tool/node/14.13.0/x64/lib/node_modules/npm/lib/config/core.js:316:10)
at /home/ubuntu/actions-runner/_work/_tool/node/14.13.0/x64/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:123:16
Here’s my workflow file:
name: CI
on: [push, pull_request]
jobs:
execute:
runs-on: self-hosted
steps:
- name: Set work folder permissions
run: pwd && sudo chown -R $USER:$USER ./
- uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/setup-node@v1.4.4
with:
node-version: 14.x
- name: Cache node modules
uses: actions/cache@v1
env:
cache-name: cache-node-modules
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Install dependencies
run: npm ci
- name: Run linter
run: npm run lint
- name: Run unit tests
run: npm run test
- name: Build project
run: npm run build
- name: Publish to npm
uses: JS-DevTools/npm-publish@v1
if: github.ref == 'refs/heads/master'
with:
token: ${{ secrets.NPM_AUTH_TOKEN }}
Edit:
After playing around a bit, I was able to do a workaround by setting INPUT_TOKEN
to empty string.
env:
INPUT_TOKEN: ''
Issue Analytics
- State:
- Created 3 years ago
- Reactions:9
- Comments:6 (1 by maintainers)
Top Results From Across the Web
NPM - Failed to replace env in config: ${NPM_TOKEN}
A proper solution would be to remove this line and update your CI deployment configuration like npm config set '//registry.npmjs.org/:_authToken ...
Read more >[SOLVED] NPM - Failed to replace env in config - YouTube
Error: Failed to replace env in config : ${INPUT_TOKEN}at /lib/node_modules/npm/lib/config/core.js:415:13 at String.replace In this video, ...
Read more >Npm - Failed To Replace Env In Config: ${Npm_Token}
Npm - Failed To Replace Env In Config: ${Npm_Token}. The easiest way to adapt jsreport to your needs is to change its configuration....
Read more >Node.js runner: Token from NPM connection is not ...
The build will fail with the error "Error: Failed to replace env in config: ${NPM_TOKEN}" (full build log is in attachments). Activity settings....
Read more >Failed to replace env in config: ${CI_JOB_TOKEN}
Failed to replace env in config : ${CI_JOB_TOKEN}. issue_1. The error seems to be linked with the package.json file in the repo.
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
as @JamesMessinger say this definitely a bug 🐛
was able to fix this by setting up the
~/.npmrc
file and definingINPUT_TOKEN
in the job:For security reasons, this GitHub Action does not write your NPM auth token to the
~/.npmrc
file like some other GitHub Actions do. Instead, it writes an environment variable placeholder namedINPUT_TOKEN
.However, the bug that you’ve discovered is that this action leaves that placeholder in your
~/.npmrc
file even after the publish step has finished. In many workflows this is fine, since the publish step is the final step of the workflow. But in your case, you’re using the cache action as well, and I believe that action is caching the~/.npmrc
file, which results in subsequent runs of your workflow failing because the~/.npmrc
file references a non-existent environment variable namedINPUT_TOKEN
.Ultimately, this is a bug 🐛 in this GitHub Action. It should restore the
~/.npmrc
file to its original state after running. But, in the meantime, there are a couple workarounds you could use:Workarounds
INPUT_TOKEN
in your workflow.– OR –