Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript YouCompleteMe错误:找不到可执行文件';npm';。安装TSServer需要npm_Typescript_Npm_Vim_Youcompleteme - Fatal编程技术网

Typescript YouCompleteMe错误:找不到可执行文件';npm';。安装TSServer需要npm

Typescript YouCompleteMe错误:找不到可执行文件';npm';。安装TSServer需要npm,typescript,npm,vim,youcompleteme,Typescript,Npm,Vim,Youcompleteme,在安装YouCompleteMe for vim时,我想安装对Java和Javascript的支持。因此,我按照以下说明运行: sudo /usr/bin/python3.6 ./install.py --java-completer --ts-completer 但是,它会出现以下错误消息: ... [100%] Linking C shared library /home/vagrant/.vim/bundle/YouCompleteMe/third_party/ycmd/third_p

在安装YouCompleteMe for vim时,我想安装对Java和Javascript的支持。因此,我按照以下说明运行:

sudo /usr/bin/python3.6 ./install.py  --java-completer --ts-completer
但是,它会出现以下错误消息:

...
[100%] Linking C shared library /home/vagrant/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/cregex/regex_3/_regex.so
[100%] Built target _regex
Downloading jdt.ls from http://download.eclipse.org/jdtls/snapshots/jdt-language-server-0.54.0-202004152304.tar.gz...
Extracting jdt.ls to /home/vagrant/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/eclipse.jdt.ls/target/repository...
Done installing jdt.ls
ERROR: Unable to find executable 'npm'. npm is required to install TSServer.

这是可以理解的,除非我已经在我的
路径上设置了npm,如下所示:

=> npm -v
6.13.4
=> which npm
/home/vagrant/.nvm/versions/node/v8.17.0/bin/npm
有人猜测为什么支持ts completer的YouCompleteMe无法安装吗

有人猜测为什么支持ts completer的YouCompleteMe无法安装吗

安装失败,因为您正在以
sudo
的身份运行install.py,并且
nvm
安装节点的位置不在
安全路径中。当脚本作为
sudo
运行时,将使用
secure\u路径

您可以看到
PATH
secure\u PATH
的不同内容,如下所示:

$ echo 'echo $PATH' | sudo sh    # secure_path
$ echo 'echo $PATH' | sh         # your user PATH
/usr/bin/python3.6 ./install.py  --java-completer --ts-completer
您还可以确认
sudo
在其路径上缺少
npm
,如下所示:

$ which npm
$ sudo which npm
怎么办

一个选项是在不使用sudo的情况下运行脚本,如下所示:

$ echo 'echo $PATH' | sudo sh    # secure_path
$ echo 'echo $PATH' | sh         # your user PATH
/usr/bin/python3.6 ./install.py  --java-completer --ts-completer
另一种方法是将nvm bin内容复制到
安全路径
位置之一。
/usr/local/bin
就是其中之一

$ find $(which npm | xargs dirname) -type l -o -type f | sudo xargs cp -t /usr/local/bin

# test
$ sudo npm -v
$ sudo node -v

执行此操作后,安装程序将发现
npm

在以sudo方式运行时,它可能不在路径上