Browserify没有将module.exports翻译成窗口属性?

时间:2014-11-25 18:10:43

标签: javascript node.js npm browserify

目前我对browserify的使用情况感到非常困惑。我一直认为它需要一个npm模块并在浏览器中使用它。但是,如果我采用标准npm模块,通过browserify运行它,并将其包含在网页中,我发现该模块完全无法访问。

节点模块:

console.log('wtf');
function SayHi() {
  return 'hello world';
}
module.exports = SayHi;

通过browserify运行它:

browserify test.js > browserify_test.js

现在当我将它包含在一个简单的网页中并打开JS控制台时,我看到:

"wtf"

但无法访问该模块:

> SayHi
ReferenceError: SayHi is not defined

为了访问我的模块,我需要在我的npm模块中添加一些样板代码:

... (previous test.js code)...
if (typeof window === 'object') {
  window.SayHi = SayHi;
}

现在,在通过browserify并加载页面后,我可以访问我的模块:

"wtf"
> SayHi
function SayHi()
> SayHi()
"hello world"

我认为browserify的重点是让你的模块在浏览器中可用。不只是在沙盒中运行它们而不是让你进入模块本身。在我为所有模块添加boilderplate之前,我认为最好在这里问一下,以确保我没有错过一些基本的东西。

我也不知道这应该如何在AMD环境中运行。

1 个答案:

答案 0 :(得分:4)