npm 是使用 nvm 安装的,但 IntelliJ 不知道它
Posted
技术标签:
【中文标题】npm 是使用 nvm 安装的,但 IntelliJ 不知道它【英文标题】:npm is installed using nvm but IntelliJ does not know about it 【发布时间】:2017-03-07 19:43:15 【问题描述】:我使用 NVM 安装了 NPM。
当我在 Intellij 终端中使用 npm 时,它说我没有安装 NPM。但是如果我使用 Ubuntu 终端,它就可以工作。
这是我尝试过的:
我已经尝试设置我的节点解释器(在“语言和框架”>“节点和 NPM”中,设置为~/.nvm/versions/node/v6.8.0/bin/node
)。
我也已经启用了 Node.js 核心库。那里显示包含 npm 包。
但是 IntelliJ 终端仍然抱怨我没有安装 npm。为什么?
【问题讨论】:
【参考方案1】:因为idea终端默认启动了一个登录shell,所以.bashrc文件没有被读取。
解决问题:
在 IntelliJ 中打开“设置”。然后,在左侧面板中展开“工具”,然后单击“终端”。
将 -i 添加到 Shell 路径。 (例如/bin/bash -i)
【讨论】:
这是否适用于较新版本的 IntelliJ IDEA? 添加后,我必须关闭并重新打开 IntelliJ 才能使其正常工作。我正在使用最新的 IntelliJ。 这也使用 zsh 为我解决了这个问题:/bin/zsh -i【参考方案2】:这为我解决了问题:
NVM 仅在终端启动时修补环境变量。如果 IDE 从终端启动,它会继承终端环境(包括修改的 PATH 环境变量,添加 NVM_DIR 环境变量等)。在这种情况下,使用 node/npm 通常没有问题,因为 Idea 看到了正确的 PATH 值。 对于 bash 作为 shell,解决方法可能如下:编辑您的 Idea 启动器并将命令设置为“/bin/bash -l -c”/path/to/idea.sh”。此命令将执行 bash 登录(即读取您的.bashrc/.bash_profile 文件)然后运行idea
https://intellij-support.jetbrains.com/hc/en-us/community/posts/205964744/comments/205060164
只需编辑您的 Intellij 启动器/启动脚本并将其更改为 /bin/bash -i -c <path to idea.sh>
【讨论】:
我们如何找到ide.sh
的路径?
检查启动器快捷方式的属性。您可以在/usr/share/applications
(用于全局安装)或~/.local/share/applications
(用于本地安装)中找到启动器
曾在 phpstorm 2020.1 和 Kubuntu 上工作。谢谢@蒂姆【参考方案3】:
ln -s "$(which node)" /usr/local/bin/node
该命令将从您安装的当前节点版本创建符号链接。如果已经有 /usr/local/bin/node 文件,请删除它,因为它可能是一个损坏的链接。
还将编辑配置中的任何项目版本更改为“节点”(这将是使用上述命令创建的链接)
【讨论】:
简单有效,谢谢兄弟。干得好! 谢谢我已经为这个问题苦苦挣扎了几个星期【参考方案4】:我在 Ubuntu 上运行,遇到了同样的问题,无法从 IntelliJ Idea 终端运行节点或无法运行启动 nvm 相关进程的 gradle 任务。
在 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 任务。
【讨论】:
【参考方案5】:添加 nvm 节点解释器对我有用:
设置 -> 语言和框架 -> Node.js 和 NPM -> 节点解释器
选择~/.nvm/current/bin/node
。如果它没有显示在解释器选择中,请单击 ...
并将其添加为新路径。
【讨论】:
【参考方案6】:对我来说,解决方案是将以下几行从 ~/.bashrc
移动到 ~/.profile
并重新启动/重新登录。
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
【讨论】:
【参考方案7】:如果您以管理员身份运行 IntelliJ 会有帮助吗?在 Windows 上,这解决了我在设置 Node、Bower 和 Git 时遇到的许多问题
【讨论】:
不幸的是,它不起作用。我做了 gksudo -k -u root "/opt/idea-IU-162.2032.8/bin/idea.sh" %f 以 root 身份运行 IntellIjJ,我在里面尝试了 node --version ,但它仍然没有显示任何事物。无论如何感谢您的帮助。【参考方案8】:正如 Elena Pogorelova 在Jetbrains forums 中指出的那样,IDE 在使用 NVM 时找不到 Node 脚本的原因是:
从桌面/系统菜单启动时,IDE 只能看到在
~/.profile
(登录 shell)中配置的环境变量,而不是在交互式 shell 配置文件中(如~/.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
【讨论】:
【参考方案9】:问题在于您的环境与运行 intellij 以及您运行的 bash 会话不同nvm <command (install/use)>
。添加 nvm 建议添加到您的 ~/.bashrc
的行通常是一个好主意,这会将所需的环境变量导出到您的每个 bash 会话中。如果您可以从 bash 运行 node --version
并打印 v6.8.0,那么您的环境是正确的,您只需要从该上下文中运行 intellij,我个人不是 IDE 的粉丝,所以我不知道确切,但我想象一下 intellij 有一种从命令行执行的方法。
【讨论】:
如果你的意思是这行代码,export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && 。 "$NVM_DIR/nvm.sh" ,它已经被添加并且我做了 source ~/.bashrc 但它输出的是来自 /usr/bin/node --version 的 v4.2.6,而不是安装的 v6.8.0 nvm,这意味着它不能解决问题 @RaymondPang 好的,那么您可能只需要从命令行运行 intellij,以便这些环境变量在 intellij 的环境中。 @RaymondPang Christian 是对的,你的问题是 NVM 的环境变量没有被传递给 intellij,因为它不是 bash 的子进程。有关详细信息,请参阅linuxcourse.rutgers.edu/rute/node12.html 第 9.9 节 @Christian Grabowski 我在终端中输入了 /opt/idea-IU-162.2032.8/bin/idea.sh 以启动 IntelliJ,这正是您所说的“从命令行运行”的意思吗?在那之后,我仍然无法在 intelliJ 中获得相同的环境变量和 Node。【参考方案10】:我遇到了同样的问题,并通过指向 /usr/local/bin/bash
而不是 /bin/bash
来修复它
【讨论】:
【参考方案11】:我在 mac OS catalina 中遇到了同样的问题,通过在 Preferences -> Tools -> Terminal -> Application Settings 中将 Shell 路径更新为 /bin/zsh 来修复它。
【讨论】:
【参考方案12】:在 Windows 上,这对我有用...
【讨论】:
【参考方案13】:我在 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
【讨论】:
以上是关于npm 是使用 nvm 安装的,但 IntelliJ 不知道它的主要内容,如果未能解决你的问题,请参考以下文章