1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

spacemacsでenv: node: No such file or directoryみたいな環境変数の問題が起きた時

Last updated at Posted at 2019-11-07

要は、spacemacsを使っていて 環境変数系のエラーが起きた場合。

.spacemacs.env ( Space f e e)に原因があるかも。

spacemacsにおける環境変数の扱い

spacemacsは初回起動時の環境変数を .spacemacs.envにコピーし、以降はそちらを読み込むらしい。
参考 ayato-p - Spacemacsで環境変数が読まれなくて困った

つまり「spacemacsを初回起動した後に nvmとか nodeとかをインストールして使っている」場合、 PC本体にnvmやnodeの環境変数があるのに .spacemacs.envにはその環境変数が無いのでspacemacsでは読み込めない …が発生する。

たとえば nvmnodeを使い es-lintをかけてもらおうとした時、spacemacsではこういうエラーが出た。

prettier errors:
env: node: No such file or directory

そして .spacemacs.envでは nvmに関する環境変数 VMDIRや、 nodeに関する Pathが無かった😇

対処

.spacemacs.env冒頭の説明を参考にする。

You can safely edit this file and tweak the values or remove the duplicates,

Spacemacs won't overwrite it unless you call the function

`spacemacs/force-init-spacemacs-env'.

つまり関数 spacemacs/force-init-spacemacs-envを呼び出せば上書きできる。

たとえば .spacemacsで以下のように追記すると、設定ファイルを読み込む度に環境変数も読み直してくれる(はず)。

(defun dotspacemacs/user-config ()
  ;; 環境変数を更新(.spacemacs.envを書き換える)
  (spacemacs/force-init-spacemacs-env)
  
  )

基本的にはこれで完了。

余談

Windowsの場合はなおも読み込まなかったり手強いので、もう .spacemacs.envのPATHに直接追記して上書き保存してしまう手もある(実際そうした)

なぜかprettierが効かなかったので、もしやnodeのPATHではと疑い .spacemacs.envのPATHに 使用しているnodeバージョンへのパスを追記したらチョット動いた。

たとえばユーザ v2okimochiがnvm-windowsを使っていてnode v10.14.0のとき、 C:\Users\v2okimochi\AppData\Roaming\nvm\v10.14.0をPATHに加えればチョット動く。

なぜチョットかというと、フォーマット違反の検出はしてくれるのに 自動整形はしてくれないから。 typescript-fmt-on-save tがあるのにどうして😇

ちなみにtypescript-linter 'eslintを明示しないとなんと検出すらしてくれなかった。ひどい。。。。。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?