Я пытаюсь использовать Browserify, чтобы я мог использовать пакет npm в браузере. Пакет Я пытаюсь использовать это thisИспользование пакета NPM в браузере с Browserify
У меня есть fcs.js файл:
// Use a Node.js core library
var FCS = require('fcs');
// What our module will return when require'd
module.exports = function(FCS) {
return FCS;
};
И в index.js файл:
var FCS = require('./fcs.js');
console.log('FCS IS ');
console.log(FCS);
Я тогда гласил:
browserify index.js > bundle.js
И создал файл index.html:
<html>
<script src="bundle.js"></script>
<script>
var fcs = new FCS();
</script>
</html>
Но я в конечном итоге с ошибкой:
Uncaught ReferenceError: FCS is not defined
Может быть, я не захватывая понятие правильно. Как я могу использовать этот пакет в браузере? Благодарю.
Спасибо, что помогает. FCS не привязан к объекту окна. Я могу сделать это в index.js, но это, похоже, не так, как полагают, делает это как загрязняющее глобальное пространство имен .... – Mark
@Mark, так вы это делаете. Либо вы прикрепляете его к «окну», чтобы использовать его глобально, либо нет, и у вас нет доступа к нему по всему миру. Это одно или другое. Не загрязнение глобального пространства имен обычно является хорошей идеей, но если вы ожидаете, что сможете называть 'new FCS()', то вы неявно ожидаете, что 'FCS' будет частью глобального пространства имен. Если вы этого не хотите, не пытайтесь вызвать 'new FCS()' в глобальном контексте. Вместо этого сделайте это из кода, в котором вы «нуждаетесь», в модуле «FCS». –
Спасибо, @JoshBeam - это было действительно полезно. Прикрепление объектов к объекту окна вообще не обсуждается в документации. Один вопрос, хотя ... возможно, можно прикрепить функцию «require» к объекту окна, чтобы можно было сделать «FCS = window.require ('./ fcs');' вне контекста 'bundle.js '? Это кажется более общим решением - только одно приложение, прикрепленное к «окну», вместо этого для одного из каждого модуля, который вы можете использовать. Я боролся с этой проблемой дома - я попробую это позже. – Kryten