2

ディレクトリを持つアプリケーションがあり、それらのディレクトリ内のファイルは を介し​​て相互に参照していrequireます。それらを移動する可能性があるため、相対パスを使用するのは嫌いです。アプリケーション ルートからの相対パスを使用する方法はありますか?

私は持っている

/home/robert/src/application/
  |\ routes
  |    \ foo.js
  |\ models
       \ bar.js
// foo.js
var bar = require('../models/bar')
  , stuff = require('../other_stuff/stuff');

私が欲しい

/home/robert/src/application/
  |\ routes
  |    \ foo.js
  |\ models
       \ bar.js
// foo.js
var bar = require('/models/bar')
  , stuff = require('/other_stuff/stuff');

/home/robert/srcただし、パスは単独で評価されるのではなく、追加されます。

4

3 に答える 3

1

多くの人が、index.jsすべてのモジュールを 1 つの場所からエクスポートするファイルを作成し始めています。モジュールは、モジュールが実際に定義されている場所ではなく、インデックス ファイルからこれらのエクスポートを必要とするだけです。何かを移動した場合は、この 1 つのファイルを更新するだけで済みます。さらに、コード カバレッジ ビルドの作成がはるかに簡単になります。

Index.js は、次のような一連の行で終了します。

module.exports.app = process.env.EXPRESS_COV ?
    require('./lib-cov/app') : require('./lib/app');

app基本的に、これは、変数に応じて標準モジュールまたはコード カバレッジ バージョンのいずれかを使用して、それを必要とするすべてのモジュールをエクスポートします。

于 2012-04-29T05:28:01.713 に答える
0

どうですか

require(__dirname + '/models/bar');

参照: http://nodejs.org/docs/latest/api/globals.html#globals_dirname

于 2012-04-29T04:33:53.947 に答える