要は、spacemacsを使っていて 環境変数系のエラー
が起きた場合。
.spacemacs.env
( Space f e e
)に原因があるかも。
spacemacsにおける環境変数の扱い
spacemacsは初回起動時の環境変数を .spacemacs.env
にコピーし、以降はそちらを読み込むらしい。
参考 ayato-p - Spacemacsで環境変数が読まれなくて困った
つまり「spacemacsを初回起動した後に nvm
とか node
とかをインストールして使っている」場合、 PC本体にnvmやnodeの環境変数があるのに .spacemacs.env
にはその環境変数が無いのでspacemacsでは読み込めない …が発生する。
たとえば nvm
で node
を使い 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
を明示しないとなんと検出すらしてくれなかった。ひどい。。。。。