[解決済み] ノードビンスクリプト実行時のコマンドライン作業ディレクトリの決定
2022-05-10 12:44:27
質問
ノードのコマンドラインインターフェイスを作成しています。グローバルにインストールされ、実行にはbinファイルを使用します。
作業中のファイルのルートディレクトリでコマンドウィンドウを開き、コマンドを実行する予定ですが、現在の作業ディレクトリを決定することができません。
process.cwd()
は、node パッケージのディレクトリを返します。私は当初、バッチファイルをラッパーとしてコードを実行しているので(binファイルが最初にnodeがなくても実行できるのはそのためです)、それは不可能だと考えていましたが、coffee-scriptは何とかそれを実現しています。coffee-scriptのソースを見てみましたが、(経験不足で)ついていけませんでした。
試しに、このpackage.jsonファイルでパッケージを作成してみてください。
{
"name": "test-package",
"version": "1.0.0",
"bin": {
"test-package": "./bin/test-package"
},
"main": "/lib/test"
}
このtest-packageのファイルをbinに格納します。
#!/usr/bin/env node
var path = require('path');
var fs = require('fs');
var lib = path.join(path.dirname(fs.realpathSync(__filename)), '../lib');
require(lib + '/test');
どなたか、この件について教えていただけませんか?
を実行し、コマンドラインのディレクトリを lib/test の中に入れてみてください。
解決方法は?
-
process.cwd()
アプリケーション内部で 'process.chdir' によって変更されていなければ、 コマンドが実行されたディレクトリを返します(ノードパッケージのディレクトリではありません)。 -
__filename
は、配置されたファイルへの絶対パスを返します。 -
__dirname
のディレクトリへの絶対パスを返します。__filename
.
モジュールディレクトリからファイルをロードする必要がある場合、相対パスを使用する必要があります。
require('../lib/test');
ではなく
var lib = path.join(path.dirname(fs.realpathSync(__filename)), '../lib');
require(lib + '/test');
呼び出し元のファイルに対して常に相対的であり、現在の作業ディレクトリに依存しない。
関連
-
[解決済み】AWS Lambdaでnodejsの「ref」モジュールを使用すると「invalid ELF header」と表示される件
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み] npmスクリプトへのコマンドライン引数の送信
-
[解決済み] なぜ "npm install" は package-lock.json を書き換えてしまうのですか?
-
[解決済み] コマンドラインからRスクリプトを実行する
-
[解決済み】Xcodeのコマンドラインからの "Build and Archive "について
-
[解決済み] [Solved] javascriptファイルを実行するカスタムスクリプトをpackage.jsonファイルに追加するにはどうすればいいですか?
-
[解決済み】npmリンクを使用してインストールされたパッケージをアンインストールするにはどうすればよいですか?
-
[解決済み】コマンドラインからスクリプト内の関数を実行する(Node JS)
-
[解決済み] sudo を使用しないと NPM モジュールがグローバルにインストールされない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 再インストールを繰り返しても、npm run でモジュール 'sass' が見つからない。
-
[解決済み】エラーです。EACCES: 権限が拒否されました、アクセス '/usr/local/lib/node_modules' 。
-
[解決済み】ENOENT, そのようなファイルまたはディレクトリがありません。
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] nodejsでfindAllのソート順を続編にする
-
[解決済み] express は `body-parser deprecated undefined extended` としてエラーを投げます。
-
[解決済み] ランタイム 'node' が PATH で見つからない - Visual Studio Code と Node.js
-
[解決済み] MongoNetworkError: 最初の接続でサーバー [localhost:27017] への接続に失敗 [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] 。
-
[解決済み] エラー: ノード出力を "|head" にパイプするときに EPIPE を書き込む。