5

requireコードを相対的に ing する代わりに、つまり./or..で開始して、モジュールを「グローバルに」定義したいと思います。たとえば、次のパッケージ構造を取ります。

/src
  /index.js
  /a.js
  /b.js
/lib
  /index.js
  ...

src/a.jsまたはの場合src/b.js、 requirelibを行うには、require('../lib')毎回実行する必要があります。../libまたは../../libまたはを手動で解決する必要があるため、さらにネストを開始すると、これは煩わしくなります../../../lib

できるようになりたいrequire('lib')。私はこれを行うことができますか?それとも、グローバルを使用する必要がありますか?

4

4 に答える 4

0

相対パスが面倒で、アプリケーションで常に lib を使用したい場合は、globalこのように変数を使用できます。

var lib = require('./lib');
global.lib = lib;

libエントリポイントでグローバル変数に設定できます。その後は、 にアクセスできますlib。しかし、それはグローバルスコープを汚染しています。慎重に使用する必要があります。

于 2013-05-17T06:55:29.157 に答える
0

ソースファイルを要求するために非相対パスを使用することは、ノードの要求が機能することを意図した方法ではありません! 任意のコード ファイルをディレクトリに置いたり、環境変数node_modulesを変更して回避したりして、この制限を回避しようとしないでください。NODE_PATH

パスなしで require を使用する場合は、必要なコードをノード モジュールとして抽出し、このノード モジュールに依存する必要があります。これにより、構造化されたコードが改善され、モジュールの複雑さが軽減され、機能がカプセル化され、テストが容易になり、コードの再利用が容易になります。

http または git からパッケージの依存関係を含めることができるため、npm で使用するノード モジュールを公開する必要はありません。詳細については、 npm の依存関係を参照してください。

于 2013-05-17T06:12:35.070 に答える
0

モジュールを node_modules に配置する場合、パスまたは相対パスを含める必要はありません

編集:

モジュール ディレクトリ内に package.json という名前のファイルを配置すると、Node はそのファイルを解析し、エントリ ポイントの相対パスとして main 属性を探して使用しようとします。たとえば、

./myModuleDir/package.json

ファイルは次のようになります。ノードはパスを使用してファイルをロードしようとします

./myModuleDir/lib/myModule.js

:

{
"name" : "myModule",
"main" : "./lib/myModule.js"
}

そのフォルダーに package.json という名前のパッケージ定義ファイルが含まれていない場合、パッケージ エントリ ポイントは index.js の既定値を想定し、この場合、Node はパス ./myModuleDir/index の下のファイルを探します。 js.

于 2013-05-17T05:30:17.010 に答える
0

index.js ファイルで module.exports を使用します。node_modules フォルダー内に配置します

于 2013-05-17T06:28:04.430 に答える