1. ホーム
  2. node.js

[解決済み] Node.jsスクリプトの適切なハッシュバング

2022-08-29 12:45:45

質問

複数の環境で動作するnode.jsのスクリプトを作成しようとしています。 特に私の場合、OS XとUbuntuの間を行ったり来たりしています。 前者では、Nodeは以下のようにインストールされています。 node となっていますが、後者では nodejs . 私のスクリプトのトップで、私は持つことができます。

#!/usr/bin/env node

または

#!/usr/bin/env nodejs

どちらか一方がコマンドを指定するのではなく、nodeがインストールされていればどちらの環境でも実行可能なスクリプトとして実行させたいですね( ./script-name.js vs. node script-name.js ).

node.jsでバックアップのハッシュバンや、どちらでも互換性のあるハッシュバンを指定する方法はありますか?

どのように解決するのですか?

もしあなたのスクリプトがNode開発者による使用を意図しているのであれば、絶対に

#!/usr/bin/env node

としてしかNodeをインストールしていない人たちとの互換性をわざわざ試さなくてもいいのです。 nodejs .

根拠は?

  • それはクールな子供たちがやっていることであり、もしあなたがそれをやらないなら、あなたはクールではないでしょう。次のような主要なノード プロジェクトがあります。 jshint , カルマ , バウワー であり、さらに npm を使うだけです。 #!/usr/bin/env node を実行スクリプトのシバングとして使用します。
  • クールな子供たちがやっているので、Ubuntu で Node を扱う人は誰でも /usr/bin/node へのシンボリックリンクとして nodejs . そこには 閲覧率の高い指示 を行うための手順が Stack Overflow や Web の至る所にあります。さらに nodejs-legacy パッケージもあり、その全体の目的はあなたのためにこのシンボリックリンクを作成することでした。Node を使用している人は、Ubuntu でこの問題を修正する方法を知っていて、彼らは をしなければなりません。 Node で書かれたほとんどすべてのソフトウェアを使いたいのであれば。
  • この問題は Ubuntu 14.04 ではもう存在しないようです。Node をパージして apt-get install nodejs を実行すると /usr/bin/node へのシンボリックリンクとして /etc/alternatives/node . この問題に悩まされている人は、少数派になっているのではないでしょうか。

Nodeを読めない人を対象にしている場合でも、Nodeを読めない人のために #!/usr/bin/env node の手動シンボリックリンク作成またはインストールの必要性を追加するかもしれません。 nodejs-legacy パッケージのインストールが必要な場合は、インストールドキュメントに追加してください。なお、もし誰かが nodejs でなく node を使用したプログラムを実行しようとすると、このように表示されます。

/usr/bin/env: node: そのようなファイルやディレクトリはありません

ググってみると でググると、最初の結果で、そして何度も最初のページで修正されます。

もしあなたが、本当に、どうしても、ユーザーがソフトウェアを nodejs は利用できるが node がない場合(あるいは node は実際には アマチュアパケットラジオノードプログラム から取得したもので、2行で構成されています。 Unix &; Linux Stack Exchange :

#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"

console.log('Hello world!');

が、Nodeの世界ではほとんど誰もやっていないのに、本当にこんなことをする必要があるのでしょうか?