【问题标题】:npm is installed using nvm but IntelliJ does not know about itnpm 是使用 nvm 安装的,但 IntelliJ 不知道它
【发布时间】: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。为什么?

【问题讨论】:

    标签: intellij-idea npm nvm


    【解决方案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
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2021-06-02
                    • 1970-01-01
                    • 2022-12-17
                    • 2022-11-10
                    • 1970-01-01
                    • 2015-02-23
                    • 1970-01-01
                    相关资源
                    最近更新 更多