jest-community / vscode-jest

The optimal flow for Jest based testing in VS Code
MIT License
2.84k stars 295 forks source link

zsh: command not found "npm" #1065

Open RigottiG opened 1 year ago

RigottiG commented 1 year ago

Environment

  1. vscode-jest version: 6.0.1
  2. node -v: 18.12.1
  3. npm -v or yarn --version: 8.19.2
  4. npm ls jest: jest@29.6.3
  5. your vscode-jest settings if customized:
    • jest.autoRun? "off"
  6. Operating system: Linux Manjaro

Prerequisite

Steps to Reproduce

Just create a minimal project and add Jest and the vscode-jest extension and I got an error.

If I run code . inside a terminal, the extension works fine.

Expected Behavior

Run vscode extension

Actual Behavior

Jest (clean-react)

[info] auto config:

found:
  rootPath: /home/guilherme/Development/clean-react
  jestCommandLine: npm test --

[warn] possible process env issue detected, restarting with a login-shell...

zsh: command not found: npm

[error] failed to retrieve test file list. TestExplorer might show incomplete test items

[info] jest process failed to start, most likely due to env or project configuration issues, please see: https://github.com/jest-community/vscode-jest/blob/master/README.md#jest-failed-to-run

connectdotz commented 1 year ago

Hmm, this sounded like a typical shell env issue. Usually fixed by restarting with a login shell... Do you happen to have jest.shell configured? If you are using zsh, try to set it to zsh to see if that makes any difference. Does this happen every time you start vscode? Or only when vscode got updated, i.e. one time thing?

RigottiG commented 1 year ago

Hmm, this sounded like a typical shell env issue. Usually fixed by restarting with a login shell... Do you happen to have jest.shell configured? If you are using zsh, try to set it to zsh to see if that makes any difference. Does this happen every time you start vscode? Or only when vscode got updated, i.e. one time thing?

I have these configuration.

  "jest.shell": "zsh",
  "jest.autoRun": "off",

but always I open my vscode I got this issue.

connectdotz commented 1 year ago

Where do you set the PATH?

zsh has different setup files between login and interactive shells... if the env is set in the interactive shell mode (zshrc) then even using login shell will not source it. While you can try to make the shell login and interactive (by passing -l -i), but I think the right solution might be either to move the critical env setup to the zshenv file or otherwise manually source the zshrc before jest (either in your test script or jestCommandLine setting)