Я пытаюсь извлечь некоторую функциональность a popular open source project, поэтому я могу использовать его как утилиту. Функциональность находится в a particular file, и по внешнему виду она должна работать автономно (aka $ node filename.js
в командной строке). Но это приводит к ошибке.Невозможно установить свойство «X» неопределенного
После проверки файла, я изолировал синтаксис, который производит ошибку и создал минимальный пример:
Файл <path>\lib.js
:
var Lib;
(function() {
function X() {};
X.prototype = {
foo: function() { console.log('foo'); },
bar: function() { console.log('bar'); }
};
Lib.X = X;
Lib.Method = function(message) {
this.x = new X();
console.log(message);
}
})();
Lib.Method('foobar');
Когда запускается в командной строке:
<path>$ node lib.js
Node.js производит следующую ошибку:
<path>\lib.js:11
Lib.X = X;
^
TypeError: Cannot set property 'X' of undefined
at <path>\lib.js:11:8
at Object.<anonymous> (<path>\lib.js:
16:2)
at Module._compile (module.js:446:26)
at Object..js (module.js:464:10)
at Module.load (module.js:353:31)
at Function._load (module.js:311:12)
at Array.0 (module.js:484:10)
at EventEmitter._tickCallback (node.js:190:38)
Я вижу, что проблема находится в заявлении Lib.X = X;
. Но я не уверен, что эта строка нарушает любые синтаксические/семантические правила. Я понимаю эту строку как: присваиваю function X
свойству X
переменной Lib
.
Что я делаю неправильно?
@downvoter: Уход объяснить, почему? Не очень заинтересованы в повторениях. Но разве это не показывает никаких исследований? Или это неясно? Или бесполезно? : D – Krumia
Я не спускал вниз, но, похоже, это вопрос по теме, ясный, даже если это была пропущенная проблема. –