npm命令在Windows(WSL)的Ubuntu上的Bash上不起作用

时间:2018-07-27 11:40:48

标签: node.js bash npm windows-subsystem-for-linux

我正在通过cmder wslbridge在Ubuntu上使用bash运行最新的稳定窗口(我尝试直接通过bash运行,但存在相同的错误)。移至基于Windows的react-native文件夹并尝试运行npm run androidreact-native run-androidgradlew clean之类的cli总是会产生错误;

enter image description here

enter image description here

令人惊讶的是,其他一些命令(例如npm start)也可以正常工作...

哪个npm打印出来; /usr/local/bin/npm

我在Windows上安装了npm,并在Ubuntu上安装了ism,npm在哪里产生了此结果

enter image description here

我真的很困惑。在bash中将npm命令运行到Windows文件夹时,应触发哪个npm? Windows还是WSL之一?!

我尝试了很多建议的解决方案,但似乎没有任何作用...

1 个答案:

答案 0 :(得分:1)

正如您所说,您不确定在运行命令时实际运行的是什么。如果运行以下命令,则可能会清楚地知道实际运行的是什么。

➜  ~ whereis npm
npm: /usr/local/bin/npm /home/damo/.nvm/versions/node/v8.11.1/bin/npm /mnt/c/Program Files/nodejs/npm /mnt/c/Program Files/nodejs/npm.cmd

➜  ~ which npm
/home/damo/.nvm/versions/node/v8.11.1/bin/npm

➜  ~ npm --version
6.4.1

➜  ~ sudo find / -name npm
/home/damo/.npm/10.52.63.39_4783/npm
/home/damo/.npm/npm
/home/damo/.nvm/versions/node/v10.4.1/bin/npm
/home/damo/.nvm/versions/node/v8.11.1/bin/npm
/home/damo/.oh-my-zsh/plugins/npm
/mnt/c/Program Files/nodejs/node_modules/npm
/mnt/c/Program Files/nodejs/node_modules/npm/bin/npm
/mnt/c/Program Files/nodejs/npm
/mnt/c/Users/stangerd/AppData/Roaming/npm

➜  ~ echo $PATH
/home/damo/.nvm/versions/node/v8.11.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program Files/cmder/vendor/conemu-maximus5/ConEmu/Scripts:/mnt/c/Program Files/cmder/vendor/conemu-maximus5:/mnt/c/Program Files/cmder/vendor/conemu-maximus5/ConEmu:/mnt/c/Program Files/Docker/Docker/resources/bin:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/HashiCorp/Vagrant/bin:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files/nodejs:/mnt/c/Program Files/Beyond Compare 4:/mnt/c/ProgramData/chocolatey/bin:/mnt/c/Program Files/Microsoft VS Code/bin:/mnt/c/Program Files/Docker/Docker/resources/bin:/mnt/c/Users/    stangerd/AppData/Roaming/npm

➜  ~ nvm use 10
Now using node v10.4.1 (npm v6.1.0)

➜  ~ echo $PATH
/home/damo/.nvm/versions/node/v10.4.1/bin:/usr/local/sbin:/usr/local/bin:........

您可以看到对我来说我也有npm的许多版本,但是它正在使用我的WSL当前的nvm版本(通过运行which npm来显示)。这是因为当搜索路径时,将使用找到的第一个路径。我路径中所有文件夹中npm的第一个实例位于/home/damo/.nvm/versions/node/v8.11.1/bin中。请注意,使用nvm时,切换节点版本时会更改路径,并且很方便地将此新路径放在所有现有路径文件夹的最前面。

它也值得检查别名集,因为它甚至在查询路径之前都会得到评估。只需运行alias即可获得列表。

希望这有助于查找实际运行的内容。我很想听听你的生活。