В Node.js (Ver. 0.12.0) У меня есть класс с методом, определенным как это:различное поведение в Node.js и Chrome
В ./constructor.js
:
function Pow() {}
Pow.prototype.wow = require("./wow/definition.js");
module.exports = Pow;
./wow/definition.js
В:
var Pow = require("../constructor.js");
function wow() {
return new Pow();
}
module.exports = wow;
В ./index.js
:
var Pow = require("./constructor.js");
var pow = new Pow();
pow.wow();
Последняя строка ./index.js
выдает следующее сообщение об ошибке:
object is not a function
at Pow.wow(./wow/definition.js:5:10)
Запуск и тот же код в Google Chrome (версия. 45.0.2454.101 64-разрядная версия), который также использует двигатель V8 но не CommonJS требуют системы, не приводит к ошибке:
function Pow() {}
Pow.prototype.wow = wow;
function wow() {
return new Pow();
}
var pow = new Pow();
pow.wow();
Может кто-нибудь сказать мне, почему в Nodejs, require("./constructor.js")
возвращает конструктор в ./index.js
, но не строимый объект в ./wow/definition.js
?
не используют круговые зависимости! –
@ DanielA.White - Если вы не применяете метод клона – StudentsTea
нет, просто не используйте круговые зависимости. – bhspencer