0

私はこのようなディレクトリ構造を持っています:

node_modules / mymodule / index.js:

module.exports = require('./lib/mymodule');

node_modules / mymodule / lib / mymodule.js

var A = require('./a'),

function MyModule(){
    var self = this;
    self.version = '0.0.1'; 
}

/**
 * Expose MyModule
 */
module.exports = MyModule;

/**
 * Expose A
 */
exports.A = A;

node_modules / mymodule / lib / a.js

function A(options) {
    console.log('A::constructor()');

};

User.prototype.test = function() {
    return "your test was successful";
};

module.exports = A;

私の問題は、Aをインスタンス化しようとすることにあります。ノードプロンプトで、次のように表示されます。

> var MyModule = require('mymodule');
undefined // why do I get undefined here ?
> var mymodule = new MyModule();
undefined
> var A = MyModule.A;
undefined
> var a = new A();
TypeError: undefined is not a function
    at repl:1:9
    at REPLServer.eval (repl.js:80:21)
    at repl.js:190:20
    at REPLServer.eval (repl.js:87:5)
    at Interface.<anonymous> (repl.js:182:12)
    at Interface.emit (events.js:67:17)
    at Interface._onLine (readline.js:162:10)
    at Interface._line (readline.js:426:8)
    at Interface._ttyWrite (readline.js:603:14)
    at ReadStream.<anonymous> (readline.js:82:12)
4

2 に答える 2

0

次のように変更node_modules/mymodule/lib/mymodule.jsします。

var exports = module.exports = {
  version: '0.0.1'
}

exports.A = require('./a');

あなたは1つだけを持つことができmodule.exportsます;)

于 2012-04-19T21:47:02.277 に答える
0

ノードREPLは、コマンドの戻り値を出力しますが、これらの場合はすべて未定義です。それはあなたの変数が未定義であるという意味ではありません。

試す:

> var A = MyModule.A;

それから

> A
于 2012-04-19T21:50:34.500 に答える