3

Nodejsアプリケーションで問題が発生しました。共有ライブラリを使用している2つの異なるアプリがあります。これは、node_modulesの1つ上のレベルにあるように配置されています。だから私はこの構造を持っています./app1/app.js./app2/app.jsそして./node_modules/shared.libs/index.js

shared.libs次に、mongoose、redisなど、他のいくつかのモジュールがインストールされます。さらに、追加機能を備えたいくつかのmogooseモデルがインストールされています。すべては次のindex.jsようにエクスポートされます:

exports.async = require('async');
exports.config = require('./config');
exports.utils = require('./lib/utils');

そして、アプリでは次のようにインポートします。

var libs = require('shared.libs');
var config = libs.config;

したがって、このコードの後configで、その共有ライブラリからのコードを使用できます。この部分は正常に機能していました。しかし今、私はこのライブラリの上に追加のレイヤーを配置する必要があります(読んでください:両方のアプリにもっと統一されたインターフェースを提供してください)。私がやろうとしたのはindex.js、共有ライブラリにいくつかの関数を追加してから、これらの関数を使用してオブジェクト全体をエクスポートすることです。var libs = require('shared.libs');しかし、以前にインポートされた(によって)オブジェクトを呼び出そうとすると、それlibsは定義されていないと表示されます。

私はここで何が間違っているのですか?

私は一般的に他のコードを同じに保ちたいので、requireどこでもパーツを交換する必要はありませんが、同時に、そのインポートされたオブジェクトから利用できる共有ライブラリから追加機能を提供しlibsます。

4

1 に答える 1

7

これは間違いなく機能するはずです:

module.exports = {
  async: require('async'),
  config: require('./config'),
  utils: require('./lib/utils'),
  foo: function () {
    return 'bar';
  }
};

次のような参照:

var libs = require('shared.libs');

console.log(libs.async);
console.log(libs.config);
console.log(libs.utils);
console.log(libs.foo);
console.log(libs.foo());

私が不思議に思うのは、上記のコメントの1つで、エラーが発生するということですlibs is not definedshared.libsモジュールの初期化中に、他の気付かれないエラーが発生するはずです。

于 2012-10-14T20:13:25.083 に答える