9

私は比較的ファイルを要求しようとしていますが、不思議なことに次のことが起こっています

これはうまく機能し、/Users/marcos/Desktop/Taper/lib/utils.js

myPath = "/Users/marcos/Desktop/Taper/lib/./utils";
require(myPath);

これはそうではありませんが、まったく同じファイルを指している必要があります。

require.paths.unshift("/Users/marcos/Desktop/Taper/lib")
require("./utils"); //Doesn't work with './'
require("utils"); //Works Fine

./この場合、パスをロードするために まだ使用できない理由は誰でも知っています。

require("path").resolve("/Users/marcos/Desktop/Taper/lib", "./utils")

結果:

"/Users/marcos/Desktop/Taper/lib/utils"

とりあえず?

前もって感謝します

4

3 に答える 3

17

更新しました:

ドキュメントから:

接頭辞が付いたモジュール'/'は、ファイルへの絶対パスです。たとえば、でrequire('/home/marco/foo.js')ファイルをロードします /home/marco/foo.js

接頭辞が付いたモジュール'./'は、を呼び出すファイルに関連していますrequire()。つまり、それを見つけるため にcircle.jsと同じディレクトリにある必要があります。foo.jsrequire('./circle')

ファイルを示す先頭の「/」または「./」がない場合、モジュールは「コアモジュール」であるか、node_modulesフォルダからロードされます。

指定されたパスが存在しない場合、プロパティがに設定されrequire()たエラーがスローされます。code'MODULE_NOT_FOUND'


これが元の答えです。これはrequire.paths(サポートされなくなった)を参照しています。

ドキュメントから:

ノードでは、接頭辞、、、またはが付いていない場合にrequire.pathsモジュールを検索するパスを表す文字列の配列です'/''./''../'

(強調鉱山)

于 2011-03-22T13:43:39.387 に答える
6

あなたはそれを使用して渡すことができますNODE_PATH

例:

NODE_PATH=`pwd` node app.js
于 2011-11-10T17:42:57.513 に答える
3

rekuireという新しいノードモジュールを作成しました。

これにより、相対パスを使用せずに「要求」することができます。

テスト/リファクタリングに関しては、大幅な時間の節約になります。

https://npmjs.org/package/rekuire

于 2013-03-28T10:07:15.647 に答える