

VS Codeで統合シェルにWSLを使っているのですが、タスク機能でYarnスクリプトを実行しようとすると

> Yarn requires Node.js 4.0 or higher to be installed.

というエラーを吐きます。  
統合シェルでYarnを叩くと正常に実行できます。

タスク機能でenvを実行し環境変数を見るとnodeのパスが追加されておらず、nodeが実行できないためエラーが起こっていると思われます。

wslの.bashrcで下記のように確かにパスは通しているので、

[code]

    export N_PREFIX="$HOME/n"; [[ :$PATH: == ":$N_PREFIX/bin:" ]] || PATH+=":$N_PREFIX/bin" # Added by n-install (see http://git.io/n-install-repo).
    
[/code]

おそらく、VS Codeのタスク機能はwslのシェルで設定した環境変数を読んでいないものと思われます。

コマンド前に以下のように書けばコマンドを実行できるのですが、

[code]

    "export PATH = \" $ HOME / n / bin：$ PATH \" &&"
    
[/code]

すべてのコマンド前にこれを追加するのは効率的でなく、また美しくないので、よりスマートな解決策はないでしょうか？

* * *

## 追記

統合シェルは

> "terminal.integrated.shell.windows": "C:\Windows\System32\bash.exe"

に設定して使っています。wsl.exeの方はVS Codeが非インタラクティブシェルを走らせるとき、bashではなくshになるっぽい？

Windowsのバージョンはwindows 10 Proの1809(October 2018 Update)です。

情報足らずで申し訳ないです。


CC BY-SA 4.0
2019-04-24T06:48:55.230
54449
2019-04-25T01:03:44.567
2019-04-25T01:03:44.567
34055
34055
question
linux node.js vscode wsl
WSLをシェルにしている場合のVSCodeタスク機能の挙動について