WebStorm 找不到节点解释器



我正在运行Manjaro,我在PATH中有一个节点,它位于/usr/bin/node,我可以使用node从终端调用它,正如预期的那样。但是当我尝试将解释器添加到WebStorm时,当我打开添加Node&npm可执行文件并导航到/usr/bin,它根本不会显示在那里。我已经通过flatpak安装了WebStorm。有什么想法吗?

通过卸载flatpakWebStorm实例成功修复了此问题,该实例是我通过Snap store安装的WebServicem。后来它就起了作用,但我会保留这个问题,以防有人有更好的解决方案。

Flatpak是沙盒的,因此它不能直接运行主机上用户主目录之外的任何东西。

然而,有一种方法可以解决这个问题,让flatpak使用flatpak-spawn运行主机二进制文件。


解决方案

1.在shell中运行这两个命令:

printf '#!/usr/bin/env shnflatpak-spawn --host node "$@"n' > ~/flatpak-node
chmod a+x ~/flatpak-node

2.在WebStorm中,转到

File>Settings>Languages & Frameworks>Node.js and NPM(或TypeScript(

并且将CCD_ 11设置为CCD_。


说明

这将在您的主目录中创建一个名为flatpak-node的可执行文件,内容如下:

#!/usr/bin/env sh
flatpak-spawn --host node "$@"

这将告诉Flatpak在主机上运行node二进制文件并传递任何参数。它之所以有效,是因为我们创建的可执行文件在主目录中,flatpak-spawn可以像在主机上(沙箱之外(一样运行命令。

就我个人而言,我制作了~/bin/flatpak-node文件,但您可以将其放在主目录中的任何位置。


奖金PHP

值得注意的是,这个解决方案适用于PhpStormphp解释器。只需在内容和文件名中用php替换node

#!/usr/bin/env sh
flatpak-spawn --host php "$@"

如果您的WebStorm检测到节点解释器,但不允许您通过终端使用它

对于将来遇到这种情况的人,如果您的flatpak安装检测到节点解释器(使用Shift+F10有效(,但通过WebStorm的终端使用nodenpm不起作用,您可以通过将WebStorm中的默认终端从sh切换到bash:来解决这个问题

File>CCD_ 26>CCD_ 27>Terminal;则将CCD_ 29设置为CCD_

如果这对你不起作用(萨克的答案也不起作用(,请跳到我答案的第二部分。

这对我来说很有效,因为我通过Pop Shop安装了WebStorm。老实说,我不知道为什么会修复它,也不知道为什么WebStorm没有自动使用默认的shell。


如果你遵循了Sarke的答案,但仍然有问题

如果您按照Sarke的回答(没有默认的节点解释器,或者您已经跳过了我的回答的第一部分(,并且您仍然有问题,那么可以按照大致相同的说明允许WebStorm访问您的整个主机终端:

printf '#!/usr/bin/env shnflatpak-spawn --host bash "$@"n' > ~/flatpak-bash
chmod a+x ~/flatpak-bash

然后将设置为默认终端(使用第1部分中的相同说明,但使用flatpak-bash(,这将允许您在flatpak的沙箱之外运行整个终端。

然而,这样做会遇到这个错误,这意味着您将失去终止WebStorm中程序(即使用Ctrl+CCtrl+V(的能力。理论上,第3部分应该可以解决这个问题,尽管由于文档不完整,我自己无法让它发挥作用。


如果你已经按照我的回答的前一部分进行了回答,并且不满意

为了避免这个错误(即终止程序的能力等(,应该(理论上(能够使用1layer的主机派生,它重新符合flatpak-spawn,并且应该支持在WebStorm中终止程序。要做到这一点,您需要";安装";host-spawn(即下载一个二进制文件,授予其执行权限chmod a+x ~/host-spawn,将其移动到~/bin(,然后为您选择的shell创建一个符号链接。希望当有人发现这个时,它的主页上有更好的文档,因为我自己并没有真正做到这一点。

最新更新