node.js module.export - PullRequest
       1

node.js module.export

0 голосов
/ 04 января 2012

Я изо всех сил пытаюсь понять, чего мне здесь не хватает:

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 ]

4 голосов
/ 04 января 2012

Экспорт Sprite в ФАЙЛ: Sprite.js вот так:

function Sprite() {
}

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

Затем внутри ФАЙЛА: Ship.js (это сложная часть, которую вам не хватает) используйте require, чтобы потребоватьСпрайт выглядит следующим образом:

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

Ship.prototype = new Sprite();

Ship.prototype.enable = function() {
}

Если модуль экспортирует что-то, если вы хотите его использовать, то вам необходимо это сделать (в модуле, с которым вы пытаетесь поиграть, а не в основном модуле)не так ли ?, как еще nodejs узнает, где находится «класс» корабля? подробнее здесь


Отредактируйте, посмотрите, как это работает (все файлы должны находиться в одном каталоге или вам нужно изменить требуемый путь)

Файл 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 голос
/ 04 января 2012

Проблема в том, что вы не включили module.exports = Sprite; в конец файла Sprite.js. Обратите внимание, что я написал экспорт, а не экспорт, так что опечатка, должно быть, была проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...