/ / изисква връща празен обект при използване на

изисква връща празен обект при използване на

Имам един много прост модул, който обединявам с Browserify. Искам да използвам този пакет както в браузъра, така и в възела. В възел работи добре, ако аз require необвързаният модул; обаче, ако аз require браузърния пакет, require връща празен обект. Тук е възпроизвеждане:

Прост модул

function Foo(bar) {
this.bar = bar;
}

module.exports = Foo;

Тест скрипт

var Foo = require("./foo"); // not bundled with Browserify
var Foob = require("./foob"); // bundled with Browserify

console.log("Foo =", Foo);
console.log("Foob =", Foob);

Изпълнява се по този начин

browserify foo.js -o foob.js
node foo-test.js

продукция

Foo = function Foo(bar) {
this.bar = bar;
}
Foob = {}

Можете да го видите Foo (необвързаната версия) е очакваната функция, но Foob (пакетираната версия) е тъжен и празен обект.

Така че въпросът е защо не е браузърът модул работи в възел?

Изясняване: Използвам "браузър", за да свържа моята webapp и аз я използвам пътища опции за опростяване на пътеки в приложението ми изискват изявления и избягвайте относителнопо дяволите. Опитвам се обаче да използвам клавиатурата за тестване на единица, но няма подобна конфигурация. Поради това, опитвайки се да изисквате несвързани файлове при използване на кран, причинява всичко да се счупи.

Отговори:

6 за отговор № 1

Намерих начин около това. Решението е да се използва браузърът --standalone опция при групирането. Това ще добави необходимия израз на module.exports в пакетирания изход.


0 за отговор № 2

Искате да вмъкнете браузъри за пакети. В този случай, уверете се, че вашите вложени пакети всъщност имат module.exports дефинирани.

Например в главния файл на вашето foob.js пакет, не забравяйте да върнете функция, която можете да използвате външно (чрез module.exports)