久しぶりすぎて設定方法を忘れていた。
blocked
clone してきた直後なので blocked と言われる。 direnv allow
したらとりあえずオッケー。
direnv: error /Users/donbulinux/Workspace/example/.envrc is blocked. Run `direnv allow` to approve its content
You must specify a $NODE_VERSIONS environment variable and the directory specified must exist!
allow した後に $NODE_VERSIONS が見つからないと言われる。
❯ cd example direnv: loading ~/Workspace/example/.envrc direnv: using node direnv: You must specify a $NODE_VERSIONS environment variable and the directory specified must exist! environment:1389: pop_var_context: shell_variables の先頭です。関数コンテキストではありません environment:1: pop_var_context: shell_variables の先頭です。関数コンテキストではありません direnv: error exit status 1
環境変数を素直にセットするとグローバルに適用されてしまうので、 .envrc
に以下のように記載する。
.envrc
以下は anyenv で nodeJS 18.14.0 を使う例なので、インストールした nodenv のパスに合わせてください。
# nodenv export NODE_VERSIONS=~/.anyenv/envs/nodenv/versions/ export NODE_VERSION_PREFIX='' use node 18.14.0
以上
再び direnv allow
すると、以下のように正常に読み込まれて終了です。
❯ direnv allow direnv: loading ~/Workspace/example/.envrc direnv: using node 18.14.0 direnv: Successfully loaded NodeJS v18.14.0, from prefix (/Users/donbulinux/.anyenv/envs/nodenv/versions///18.14.0)
エラーが出るパターン
以下のように、パス指定の最後に /
をつけ忘れると versions
ディレクトリ以下を検出できないようでエラーになるので気をつけてください。
export NODE_VERSIONS=~/.anyenv/envs/nodenv/versions
こうなる。
❯ direnv allow direnv: loading ~/Workspace/example/.envrc direnv: using node 18 direnv: Unable to find NodeJS version (18) in (/Users/donbulinux/.anyenv/envs/nodenv/versions)! environment:1389: pop_var_context: shell_variables の先頭です。関数コンテキストではありません environment:1: pop_var_context: shell_variables の先頭です。関数コンテキストではありません direnv: error exit status 1