要は、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を明示しないとなんと検出すらしてくれなかった。ひどい。。。。。