node.js module.export

时间:2012-01-04 10:30:41

标签: javascript node.js module

我很难理解我在这里缺少的东西:

FILE: Sprite.js
function Sprite() {
}

Sprite.prototype.move = function () {
}

module.exports = Sprite;

FILE: Ship.js
function Ship() {
}

Ship.prototype = new Sprite();

Ship.prototype.enable = function() {
}

FILE: Server.js
var util    = require('util'),
io  = require('socket.io'),
Sprite  = require('./sprite.js'),
Ship    = require('./ship.js');

var boo = new Ship(Sprite);

在Node.js之外,这很好用。但是在Node.js中,它不会识别出货文件中的Sprite。我已经尝试在精灵文件的末尾使用module.export = Sprite但没有成功。

干杯

2 个答案:

答案 0 :(得分:4)

在FILE:Sprite.js中导出Sprite,如下所示:

function Sprite() {
}

Sprite.prototype.move = function () {
}
exports.Sprite = Sprite;

然后在FILE:Ship.js(这是你想要的棘手部分)中使用require来要求像这样的Sprite:

var Sprite = require('/path/to/Sprite');
function Ship() {
}

Ship.prototype = new Sprite();

Ship.prototype.enable = function() {
}

如果一个模块导出smth,如果你想使用它,那么你需要它(在你尝试使用它的模块中,而不是在主模块中)不是吗?还有nodejs要知道船“班级”在哪里? more info here


编辑,看到这个工作(所有文件都需要在同一个目录中,否则你需要更改需求路径)

文件sprite.js:

var Sprite = function () {
}
Sprite.prototype.move = function () {
    console.log('move');
}
module.exports = Sprite;

档案ship.js:

var Sprite = require('./sprite');
function Ship() {
}

Ship.prototype = new Sprite();

Ship.prototype.enable = function() {
    console.log('enable');
}

module.exports = Ship;

档案main.js:

var Ship = require('./ship');

var boo = new Ship();

boo.move();
boo.enable();

使用node main.js运行示例,您应该看到:

C:\testrequire>node main.js
move
enable

答案 1 :(得分:1)

问题是您没有在Sprite.js文件的末尾包含module.exports = Sprite;。请注意,我写了导出而不是导出,因此错字必定是问题。