在browserify创建的包文件中使用现有模块对象

时间:2016-02-21 06:17:26

标签: javascript node.js browserify

我有两个文件:a.jsb.js

a.js

console.log(require("./b.js")());
module.exports = function () {
   console.log("Hello Mars!");
};

b.js

module.exports = function () {
    console.log("Hello World");
};

通过捆绑这些文件,我获得了c.js

browserify a.js -o c.js

我希望c.js导出一个函数(在调用时打印Hello Mars)。通过节点进程中的require c.js,我得到一个空对象。

$ node
> c = require("./c.js")
Hello World
undefined
{}
> c()
TypeError: c is not a function
    at repl:1:1
    at REPLServer.defaultEval (repl.js:252:27)
    at bound (domain.js:287:14)
    at REPLServer.runBound [as eval] (domain.js:300:12)
    at REPLServer.<anonymous> (repl.js:417:12)
    at emitOne (events.js:82:20)
    at REPLServer.emit (events.js:169:7)
    at REPLServer.Interface._onLine (readline.js:210:10)
    at REPLServer.Interface._line (readline.js:549:8)
    at REPLServer.Interface._ttyWrite (readline.js:826:14)

由于node已经有module个对象,如何告诉Browserify将此module对象用于主文件,因此我将获得Hello Mars函数在节点中使用module.exportsrequire

我检查了文档,但我没有找到任何选项......也许我想念一些东西。

我只想在节点进程中捆绑一个模块(具有依赖项)和require

1 个答案:

答案 0 :(得分:1)

您正在寻找以下选项:

  

- standalone -s
  为提供的导出名称生成UMD包。                      此捆绑包与其他模块系统一起使用并设置名称                      如果没有找到模块系统,则作为全局窗口给出。

您可能还想传递<button id="mybutton">Click me</button> ... <script> (function(){ var images = [ ... ]; mybutton.onclick = function(){ loadImages(images); }; })(); </script> 选项,以关闭特定于节点的功能的转换。