#!/ usr / bin / envノードそれはなんですか?



Usr Bin Env Node What Is It



前回の記事では、npmパッケージを開発するプロセスを紹介しました。この記事では、npmパッケージの開発で発生した問題について説明します。最初の質問は#!/usr/bin/env node正確には何ですか? (私の理解が間違っている場合は、みんなにポインタを与えることを歓迎します)

npmパッケージを開発するときに、パッケージをプロジェクトにリンクした後、ランタイムパッケージがエラーを検出しました。



Googleにアクセスして、解決策がbinファイルの上に行を追加することであることを確認します。 #!/usr/bin/env node。この文の役割は何ですか?紹介する前に、知識ポイントを紹介する必要があります。

シバン

LinuxまたはUnixを使用したことのあるフロントエンド開発者がいる場合、それはShebangにとって見知らぬ人ではないはずです。これは、象徴的な名前です。#!。この記号は通常、Unixシステムの基本の最初の行の先頭に表示され、このスクリプトファイルのインタープリターを示します。 Shebangを理解すると、ノードで実行するスクリプトファイルを指定するためにこの行が追加されていることがわかります。

コマンドを入力するときに、npmはどのようにして対応するファイルを識別して実行しますか?特定の原則 Npmスクリプトユーザーガイド 途中で紹介。簡単に理解すると、コマンドを入力すると、指定したスクリプトが新しく作成されたシェルで実行されます。このスクリプトを実行するときは、スクリプトのインタープリターがノードであることを指定する必要があります。



場合によっては、この行を増やしてもエラーが発生することがあります。どうして?

No such file or directory Copy code

この問題を解決するには、まず/usr/bin/envを理解する必要があります。 Shebangがスクリプトのインタープリターを指定することはすでにわかっていますが、異なるユーザーまたは異なるスクリプトインタープリターが異なるディレクトリにインストールされる場合があります。システムはどのようにしてインタプリタの場所を知るのですか?/usr/bin/env PATHディレクトリを調べるようにシステムに指示するだけです。したがって、configure #!/usr/bin/env nodeは、さまざまなユーザーノードパスの問題を解決し、システムがスクリプトファイルを実行するノードを動的に見つけられるようにします。

ここを参照して、なぜ表示されるのかを理解する必要がありますNo such file or directory間違い?ノードのインストールパスがシステムのPATHに追加されていないためです。したがって、ノード環境変数の構成に移動します。



簡単にテストしたい場合は、which nodeコマンドを渡してローカルノードのインストールパスを見つけ、/usr/bin/env見つけたノードパスに変更します。

最後に注意すべき点は、WindowsはShebangをサポートしていないということです。ファイル拡張子を使用して、スクリプトの実行に使用するインタープリターを決定します。

転載:https://juejin.im/post/5cb93cd651882578b148c637