Имам един много прост модул, който обединявам с 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
)