我正在尝试使用Browserify,以便可以在浏览器中使用npm软件包。我要使用的软件包是this
我有一个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
也许我没有正确地理解这个概念。如何在浏览器中使用此软件包?谢谢。
最佳答案
不要这样做:require('./fcs.js');
这样做:require('./fcs');
当您require
某些内容时,扩展名隐式地为.js
。还要确保模块FCS
具有入口点(默认值为index.js
,但是您可以在main
的package.json
条目中进行更改)。
另外,在您的index.html
文档中,您期望FCS
是全局对象。我还没有看到FCS
的内部代码,但是只有将它附加到window
对象时,它才会全局可用。
当您require
某项内容时,它只会使其在需要的其余代码中可用。如果要使其全局可用,则必须将其附加到window
对象,就像其他任何东西一样。
换句话说,您的FCS
模块的内部可能类似于:
// node_modules -> fcs -> index.js
var FCS = function() {};
window.FCS = FCS; // this makes it globally available
module.exports = FCS; // this lets you require it
关于javascript - 在浏览器中通过Browserify使用NPM软件包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31522125/