ygsiro
@ygsiro (シロ)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【解決済】MojoをCode Runnerで動かす際にシバンは必須ですか?

解決したいこと

Qiitaの記事を見てMojoを導入し、Hello worldがターミナルでもファイルでも実行できるところまで確認できました。
実行するためにいちいちmojo ファイル名.mojoと入力するのが面倒なのでCode Runnerで動かそうとしたところmojoコマンドが見つからないとエラーが出ました

発生している問題・エラー

/bin/sh: mojo: command not found

自分で試したこと

  1. VSCodeのターミナルがzshでない可能性があるのでターミナルのプロファイルをzshに設定しました
  2. Mojo拡張機能のMojo: Modular Home Pathにも/Users/username/.modularを設定してみました

上記を試しても動かないのでMojoファイル先頭に#!$MODULAR_HOME/pkg/packages.modular.com_mojo/bin/mojoを記述したところ問題なく動きました。

上記で動くなら~/.zshrcに記載した環境変数$MODULAR_HOMEは読み込まれていると思います。
export PATH="$MODULAR_HOME/pkg/packages.modular.com_mojo/bin:$PATH"は反映されないのでしょうか?

0

2Answer

setting.jsoncode-runner.executorMapmojoの追加が必要では?
外していたらごめんなさい。

1Like

Comments

  1. @ygsiro

    Questioner

    自分で設定はしていませんが追加されていました。

    "code-runner.executorMapByFileExtension": {
        ".mojo": "mojo run"
    },    
    
  2. /bin/sh: mojo: command not found

    が出た時のターミナルで、which mojoを打つと、not foundですか?
    echo $PATH|tr ":" "\n"でパスを確認できますか。

  3. @ygsiro

    Questioner

    エラーが出てくるのがVSCodeの出力の画面なのでwhich mojoなどを入力できないのですが、
    vscodeのターミナルでwhich mojoは結果があります。
    echo $PATH|tr ":" "\n"でパスも確認できます。
    スクリーンショット 2023-11-05 9.41.46.png


    シバンを書かなかった場合
    スクリーンショット 2023-11-05 9.37.01.png

    シバンを書いた場合
    スクリーンショット 2023-11-05 9.39.21.png

  4. エラーが出てくるのがVSCodeの出力の画面なのでwhich mojoなどを入力できないのです

    setting.jsonに下記を追加すると入れられると思います。

         "code-runner.runInTerminal": true,
    
  5. @ygsiro

    Questioner

    上記を試したところエラー自体がなくなりました。

    スクリーンショット 2023-11-05 9.56.01.png
    念の為、上記チェックを外すと同じくエラーになります。
    Code runnerで実行するターミナルが違うんですかね?

  6. @ygsiro

    Questioner

    VSCodeを再起動すると解決しました。
    ありがとうございます

解決済み or 試し済みなら申し訳ないのですが、VS Code のターミナルを一旦全て削除(終了)し、VS Code を再起動してどうでしょう?

VSCode のターミナルは起動時の環境変数しか保持しません。特に macOS の VSCode でターミナルを "Osx Exec"(ホストのターミナルを使う)設定にしても同じです。

ホストのターミナル上で env すると変数は設定されているのに、VSCode のターミナル上で env すると表示されない(反映されない)ことが多々あり、OS をクリーンインストールするたびに失念していてハマりどころだったので。

1Like

Comments

  1. @ygsiro

    Questioner

    ありがとうございます。
    解決しました。
    VSCodeが再起動必要だったんですね

  2. よかった。
    困った時の再起動とはいえ、「え?この設定で要アプリの再起動?」というのが意外にあって困りものです。

Your answer might help someone💌