npm 是使用 nvm 安装的,但 IntelliJ 不知道

npm is installed using nvm but IntelliJ does not know about it

我使用 NVM 安装了 NPM。

当我在 Intellij 终端中使用 npm 时,它说我没有安装 NPM。但是如果我使用 Ubuntu 终端,它就可以工作。

以下是我的尝试:

我已经尝试设置我的节点解释器(在 "Language and Framework" > "Node and NPM" 中,设置为 ~/.nvm/versions/node/v6.8.0/bin/node)。

我也已经启用了 Node.js 核心库。那里显示包含 npm 包。

但是 IntelliJ 终端仍然抱怨我没有安装 npm。为什么?

如果您 运行 IntelliJ 作为管理员有帮助吗?在 Windows 上,这解决了我在设置 Node、Bower 和 Git

时遇到的许多问题

问题是您的环境不同于 运行ning intellij 以及您 运行 nvm <command (install/use)> 的 bash 会话。添加 nvm 建议添加到您的 ~/.bashrc 行通常是一个好主意,它将需要的环境变量导出到您的每个 bash 会话中。如果你可以从 bash 运行 node --version 并且它打印 v6.8.0,你的环境是正确的,你只需要从那个上下文 运行 intellij,我个人不是IDE 的粉丝所以我不知道确切,但我想 intellij 有一种从命令行执行的方法。

因为idea终端默认启动了一个登录shell,所以没有读取.bashrc文件。

解决问题:

在 IntelliJ 中打开 "Settings"。然后,在左侧面板中展开 "Tools",然后单击 'Terminal'。

将 -i 添加到 Shell 路径。 (例如 /bin/bash -i)

这为我修复了它:

NVM patches environment variables on terminal startup only. If the IDE is launched from Terminal, it inherits Terminal environment (including modified PATH environment variable, added NVM_DIR env var, etc). In that case, there are normally no problems with using node/npm, because Idea sees the correct PATH value. For bash as shell, workaround could be the the following: edit your Idea launcher and set command to "/bin/bash -l -c "/path/to/idea.sh". This command will perform bash login (i.e. reading your .bashrc/.bash_profile files) and after that will run idea

https://intellij-support.jetbrains.com/hc/en-us/community/posts/205964744/comments/205060164

只需编辑您的 Intellij 启动器/启动脚本并将其更改为 /bin/bash -i -c <path to idea.sh>

我正在 运行 宁 Ubuntu 并且遇到了同样的问题,无法从 IntelliJ Idea 终端 运行 节点或能够 运行 gradle 启动 nvm 相关进程的任务。

一些现有的答案在 Idea 中使用终端时为我修复了它,但是 运行 宁 gradle 任务仍然没有工作。用 bash -l -c... 启动它,在其他地方发现也不起作用。

最初通过创建一个与 nvm 所做的相同的启动脚本来解决它,然后执行 bash -l -c... 并且有效,但发现(在那之后) -i 如上所述也可以工作并且更简单......所以我的 .desktop exec 入口行现在是:

Exec=/bin/bash -i -c /opt/intellij/idea-IU/bin/idea.sh "%f"

只是在这里提及它,因为公认的解决方案不适用于从 Idea 中启动与 nvm 相关的 gradle 任务。

我有同样的问题,并通过指向 /usr/local/bin/bash 而不是 /bin/bash

来修复它

我在 mac OS catalina 中遇到了同样的问题,通过在首选项 -> 工具 -> 终端 -> 应用程序中将 Shell 路径更新为 /bin/zsh 来修复它设置。

添加 nvm 节点解释器对我有用:

设置 -> 语言和框架 -> Node.js 和 NPM -> 节点解释器

选择~/.nvm/current/bin/node。如果它没有出现在解释器选择中,请单击 ... 并将其添加为新路径。

ln -s "$(which node)" /usr/local/bin/node

该命令将从您安装的当前节点版本创建一个符号link。如果已经有 /usr/local/bin/node 文件,请将其删除,因为它可能已损坏 link.

同时将编辑配置从您必须的任何项目版本更改为“节点”(这将是使用上述命令创建的 link)

在 Windows 这对我有用...

对我来说,解决方案是将以下行从 ~/.bashrc 移动到 ~/.profile 和 reboot/relogin。

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

正如 Elena Pogorelova 在 Jetbrains forums 上指出的 IDE 使用 NVM 时找不到节点脚本的原因是:

When being launched from desktop/System menu, IDE only sees environment variables configured in ~/.profile (login shell), but not in interactive shell configuration files (like ~/.bashhrc).

因此,我发现最好的解决方案是将 NVM 初始化指令从 ~/.bashrc 文件移动到 ~/.profile 并在之后重新启动。在我的例子中是:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

我在 mac 上使用 webstorm 并且必须将路径变量添加到 ~/.zshenv(这是 ~/.bash_profile 的 zsh 版本):

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion