【问题标题】:npm commands not working on Bash on Ubuntu on Windows (WSL)npm 命令在 Windows 上的 Ubuntu 上的 Bash 上不起作用(WSL)
【发布时间】:2018-07-27 11:40:48
【问题描述】:

我在 Ubuntu 上通过 cmder wslbridge 运行带有 bash 的最新稳定 Windows(我尝试直接通过 bash 运行但同样的错误)。移动到我基于 Windows 的 react-native 文件夹并尝试运行诸如 npm run androidreact-native run-androidgradlew clean 之类的 cli 总是会产生错误;

虽然令人惊讶的是,其他一些命令(如 npm start)也能正常工作......

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

我在 windows 和 inisde Ubuntu 上安装了 npm,而 npm 在哪里产生这个

我在这里真的很困惑;当在 bash 中运行 npm 命令到 windows 文件夹时,应该触发哪个 npm? Windows 还是 WSL 的?!

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

【问题讨论】:

  • @Biswapriyo 如前所述,我正在使用带有 bash WSL 桥的 Cmder,并且颜色主题只有 oh-my-zsh ...但会尝试纯 cmd!编辑:在 cmd.exe 中尝试过;完全相同的错误!
  • 您是否在 Windows 中编辑了gradlew? Windows 中使用的回车有一些错误。尝试将行尾从\r\n 更改为\n。对该 gradlew 文件使用 sed 命令:unix.stackexchange.com/questions/138472

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


【解决方案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 即可获取列表。

希望这有助于找到实际运行的内容。我很想听听你的进展。

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 2012-08-01
    • 2018-06-21
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多