web-dev-qa-db-ja.com

Node.jsは同じディレクトリに.jsファイルを必要としません

main.jsを含むnode-webkitプロジェクトがあります。一番上に、私は持っています

var updater = require("./updater.js");

updater.jsと同じディレクトリにmain.jsという名前のファイルがあります。アプリを実行するとエラーが発生する

Uncaught Error: Cannot find module './updater.js' 

updater.jsには1行あります:

module.exports = "Hello!";

ファイルを必要としない理由がわかりません。別のプロジェクトが同じことをするのを見ました。 require通常のnpmモジュールを同じmain.jsから問題なく使用できます。

23
Antrikshy

これは、node-webkitを使用してアプリ(main.js)を実行すると、ルート(作業)ディレクトリーがindex.htmlがある場所にあるため、「./」はファイルが存在するディレクトリーではなく、そのディレクトリーを参照するためです。からモジュールをリクエストしています。

'path'ノードモジュールのメソッドの解決 を使用してこの問題を簡単に解決し、その出力を作業ファイルのrequireメソッドに提供することができます

次のようにしてください:

var path = require('path');
var updater = require( path.resolve( __dirname, "./updater.js" ) );

編集:グローバルノードオブジェクト '__dirname'(およびその他)の情報は、 ここ で見つかります。

31
Dmitry Matveev