如何将浏览器化的节点模块集成到早午餐构建的应用程序中?

时间:2015-07-20 09:11:30

标签: javascript backbone.js browserify brunch

前端开发新手,我正在尝试用早午餐构建基于骨干网的webapp。 在我尝试使用名为node-xmpp-client的节点模块之前,一切都很顺利。 这个模块有一个浏览器版本: node-xmpp-browser.js ,可以在我的谷歌浏览器中正常运行。

1-我尝试将此node-xmpp-browser.js添加到供应商目录以将其捆绑到app.js中,但在加载index.html页面时,我的js控制台中出现以下错误:

Uncaught TypeError: require.register is not a function Uncaught
TypeError: require.register is not a function Uncaught TypeError:
loaderPath.indexOf is not a function

2-然后,我尝试将此脚本直接添加到我的index.html页面中(与node-xmpp-client浏览器示例一样):

<!DOCTYPE html>
<html lang="en">
<head>
  <title>My WebUI</title>
  <link rel="stylesheet" type="text/css" href="app.css">
  <meta name="viewport" content="width=device-width" initial-    scale="1.0">
</head>
<body>
  <div class='root-view'></div>
  <script src="node-xmpp-browser.js"></script>
  <script src='vendor.js'> </script>
  <script src='templates.js'> </script>
  <script src='app.js'> </script>
  <script> require('initialize');  </script>
</body>
</html>

但控制台再次抱怨:

Uncaught TypeError: require.register is not a function
Uncaught TypeError: require.register is not a function
Uncaught Error: Cannot find module 'initialize'

似乎与如何在浏览器化脚本和早午餐构建脚本中声明模块(通过require关键字)存在冲突?

将这样的浏览器模块包含在基于早午餐的应用程序中的正确方法是什么?

非常感谢你的时间,

皮尔

1 个答案:

答案 0 :(得分:1)

您需要将require定义捆绑到客户端脚本中。这是默认情况下在Brunch中出现的,因此需要调整脚本标记的顺序,以便在任何期望的脚本加载之前定义require,或者您可能在配置中设置modules: definition: false