ОШИБКА YouCompleteMe: невозможно найти исполняемый файл 'npm'. npm требуется для установки TSServer - PullRequest
1 голос
/ 26 мая 2020

При установке YouCompleteMe для 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 уже настроен на моем PATH, как показано ниже:

=> npm -v
6.13.4
=> which npm
/home/vagrant/.nvm/versions/node/v8.17.0/bin/npm

Есть ли предположения о том, почему YouCompleteMe с поддержкой ts-completer не удается установить?

1 Ответ

1 голос
/ 18 июня 2020

Есть какие-то догадки о том, почему YouCompleteMe с поддержкой ts-completer не удается установить? Узел 1006 * installs отсутствует в secure_path. secure_path используется, когда сценарий запускается как sudo.

Вы можете увидеть различное содержимое PATH и secure_path следующим образом:

$ echo 'echo $PATH' | sudo sh    # secure_path
$ echo 'echo $PATH' | sh         # your user PATH

Вы также можете подтвердить, что sudo не имеет npm на своем пути, как это :

$ which npm
$ sudo which npm

Что делать?

Один из вариантов - запустить сценарий без sudo следующим образом:

/usr/bin/python3.6 ./install.py  --java-completer --ts-completer

Другой - скопировать содержимое bin nvm в одно из мест secure_path. /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.

...