cli icon indicating copy to clipboard operation
cli copied to clipboard

[BUG] Error occurs when executing npm scripts and npx when script-shell=pwsh.exe is specified in .npmrc

Open JichouP opened this issue 3 years ago • 7 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

This issue exists in the latest npm version

  • [X] I am using the latest npm

Current Behavior

E:\workspace>npx
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.

Entering npm script environment at location:
E:\workspace
Type 'exit' or ^D when finished

ParserError: 
Line |
   1 |  -- pwsh.exe
     |    ~
     | Missing expression after unary operator '--'.

Expected Behavior

Works fine if script-shell is set to cmd.exe.

E:\workspace>npm config set script-shell cmd.exe
E:\workspace>npx
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.

Entering npm script environment at location:
E:\workspace
Type 'exit' or ^D when finished

Microsoft Windows [Version 10.0.22000.856]
(c) Microsoft Corporation. All rights reserved.


E:\workspace>

Steps To Reproduce

  1. Run npm config set script-shell pwsh.exe
  2. Run npm run <script> in any Node.js project. Or run npx, npx create-next-app, npm create tauri-app, etc.
  3. See error like this
ParserError: 
Line |
   1 |  -- pwsh.exe
     |    ~
     | Missing expression after unary operator '--'.

Environment

  • npm: 8.18.0
  • Node.js: 16.16.0
  • OS Name: Microsoft Windows [Version 10.0.22000.856]
  • System Model Name: MS-7D30
  • Power Shell: 7.2.6
  • npm config:
; "builtin" config from C:\Users\jichoup\AppData\Roaming\npm\node_modules\npm\npmrc

prefix = "C:\\Users\\jichoup\\AppData\\Roaming\\npm" 

; "user" config from C:\Users\jichoup\.npmrc

//registry.npmjs.org/:_authToken = (protected) 
script-shell = "pwsh.exe" 
shell = "pwsh.exe" 

; node bin location = C:\Program Files\nodejs\node.exe
; node version = v16.16.0
; npm local prefix = E:\workspace
; npm version = 8.18.0
; cwd = E:\workspace
; HOME = C:\Users\jichoup
; Run `npm config ls -l` to show all defaults.

JichouP avatar Aug 21 '22 15:08 JichouP

It seems to be related to PR #5297.

JichouP avatar Aug 21 '22 15:08 JichouP

I might've been doing something wrong, but even when I downgraded npm to version 7.24.0 and running on Node 18.9.0 I still received this error. I've installed Node via winget, so I had to follow the NPM instructions upgrade instructions to change the NPM version.

Anyways, I started downgrading Node and found that 18.3.0 with npm version 8.11.0 no longer has issue. I know you're on version 16.16.0, so this may be of little help. Maybe it's something to do with both the npm and Node working in conjunction? Not sure.

kwburnett avatar Sep 19 '22 19:09 kwburnett

Been having the same issue for a while. Downgrading to npm 8.12 helps for me. node version doesn't seem to affect the bug.

Hellaeh avatar Sep 19 '22 20:09 Hellaeh

Any news on this?

drakonkat avatar Oct 21 '22 11:10 drakonkat

Removing ~/.npmrc file helps me out. NPM (@latest and @next-9) installs packages correctly without that error about pwsh -c --.

Anyway, you can remove script-shell and shell lines from npmrc and check.

di-ma-73 avatar Oct 30 '22 22:10 di-ma-73