我正在运行Manjaro,我在PATH中有一个节点,它位于/usr/bin/node
,我可以使用node
从终端调用它,正如预期的那样。但是当我尝试将解释器添加到WebStorm时,当我打开添加Node&npm可执行文件并导航到/usr/bin
,它根本不会显示在那里。我已经通过flatpak安装了WebStorm。有什么想法吗?
通过卸载flatpak
WebStorm实例成功修复了此问题,该实例是我通过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
值得注意的是,这个解决方案适用于PhpStorm和php
解释器。只需在内容和文件名中用php
替换node
:
#!/usr/bin/env sh
flatpak-spawn --host php "$@"
如果您的WebStorm检测到节点解释器,但不允许您通过终端使用它
对于将来遇到这种情况的人,如果您的flatpak安装检测到节点解释器(使用Shift+F10
有效(,但通过WebStorm的终端使用node
或npm
不起作用,您可以通过将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+C
和Ctrl+V
(的能力。理论上,第3部分应该可以解决这个问题,尽管由于文档不完整,我自己无法让它发挥作用。
如果你已经按照我的回答的前一部分进行了回答,并且不满意
为了避免这个错误(即终止程序的能力等(,应该(理论上(能够使用1layer的主机派生,它重新符合flatpak-spawn
,并且应该支持在WebStorm中终止程序。要做到这一点,您需要";安装";host-spawn
(即下载一个二进制文件,授予其执行权限chmod a+x ~/host-spawn
,将其移动到~/bin
(,然后为您选择的shell创建一个符号链接。希望当有人发现这个时,它的主页上有更好的文档,因为我自己并没有真正做到这一点。