ikmnjrd.github.io

NeoVimとvoltaを併用するとNodeを見つけてくれない問題

Posted on 2022-10-13
目次

環境

関連ソフトウェア バージョン
macOS 12.6
NodeJS 16.17.0
volta 1.0.8
NeoVim 8.0

結論

voltaを使うならvoltaのIssueにあるようにinit.vimに以下のような記述をしておく。

if executable('volta')
  let g:node_host_prog = trim(system("volta which neovim-node-host"))
endif

経緯とシューティングタイムライン

仕事でNeoVimは一切使っていないのですが、休日趣味的に開いてみたらなんか様子がおかしい。

NeoVimを開いて:checkhealth providerを入力すると、以下のようなメッセージ。

provider: health#provider#check
========================================================================

## Node.js provider (optional)
  - INFO: Node.js: v16.17.0
  - WARNING: Missing "neovim" npm (or yarn, pnpm) package.
    - ADVICE:
      - Run in shell: npm install -g neovim
      - Run in shell (if you use yarn): yarn global add neovim
      - Run in shell (if you use pnpm): pnpm install -g neovim
      - You may disable this provider (and warning) by adding `let g:loaded_node_provider = 0` to your init.vim

npm install -g neovimもしくはvolta install neovimをしても変わらない。
ここで公式のHelpを読むと、

By default, Nvim searches for "neovim-node-host" using "npm root -g", which can be slow. To avoid this, set g:node_host_prog to the host path: Provider - Neovim docs

自分のvoltaを使ってる環境でnpm root -gを実行すると以下のような結果に。

/Users/ike/.volta/tools/image/node/16.17.0/lib/node_modules

ということで、g:node_host_progオプションを設定したいが、うまくいかん。
そもそもvoltaを使ってグローバルインストールしたパッケージは/Users/ike/.volta/bin/volta-shimにshimとしてインストールされ、シンボリックリンクが貼られる形をとっている。
こんな感じ

% ls -al ~/.volta/bin
drwxr-xr-x  12 ike  staff      384 Oct 13 16:45 .
drwxr-xr-x   9 ike  staff      288 Sep 10 23:29 ..
lrwxr-xr-x   1 ike  staff       32 Sep 21 21:34 http-server -> /Users/ike/.volta/bin/volta-shim
lrwxr-xr-x   1 ike  staff       32 Sep 15 23:36 memlab -> /Users/ike/.volta/bin/volta-shim
lrwxr-xr-x   1 ike  staff       32 Oct 13 16:45 neovim-node-host -> /Users/ike/.volta/bin/volta-shim
lrwxr-xr-x   1 ike  staff       32 Sep 10 23:29 node -> /Users/ike/.volta/bin/volta-shim
lrwxr-xr-x   1 ike  staff       32 Sep 10 23:29 npm -> /Users/ike/.volta/bin/volta-shim
lrwxr-xr-x   1 ike  staff       32 Sep 10 23:29 npx -> /Users/ike/.volta/bin/volta-shim
-rwxr-xr-x   1 ike  staff  6522504 Jun  2 09:14 volta
-rwxr-xr-x   1 ike  staff  4771376 Jun  2 09:14 volta-migrate
-rwxr-xr-x   1 ike  staff  5522480 Jun  2 09:14 volta-shim
lrwxr-xr-x   1 ike  staff       32 Sep 10 23:29 yarn -> /Users/ike/.volta/bin/volta-shim

わからん状態だったため、GitHubを探し、結論部分でも貼ったコードをコピペして終了。
Vim(NeoVim)わからん。

周辺用語

  • Shim

参考文献