javascript - Node.js 模块.export

标签 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 中,它无法识别 Ship 文件中的 Sprite。我尝试在 Sprite 文件末尾使用 module.export = Sprite 但没有成功。

干杯

最佳答案

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

function Sprite() {
}

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

然后在文件中:Ship.js(这是您缺少的棘手部分)使用 require 来要求 Sprite,如下所示:

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

Ship.prototype = new Sprite();

Ship.prototype.enable = function() {
}

如果一个模块导出了一些东西,如果你想使用它,那么你需要要求它(在你试图使用它的模块中,而不是在主模块中)不是吗?,否则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

关于javascript - Node.js 模块.export,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8725319/

相关文章:

javascript - 什么是没有外大括号的 JavaScript 对象?

javascript - Highmaps 多个系列不禁用一个就看不到

javascript - 自动检测服务器端黑客攻击

node.js - 无法安装夏普

javascript - 在 docker 中运行 Node 时未满足的对等依赖问题

javascript - Web Workers 文件可以处理包含或模块吗?

javascript - Lite 服务器不工作

node.js - Sequelize 和 PostGIS 几何列未返回正确的 JSON

python - from ... import OR import ... 对于模块

JavaScript 模块模式 : initialise two objects on load