我想使用Browserify bundle 我的文件,但是随后我需要在HTML页面本身上的Browserify bundle bundle.js中需要其中一个模块。当前无法执行此操作,因为该页面上未定义require函数。

看来,由browserify在require中定义的bundle.js函数在IIFE中,所以我不能使用它。是否可以将其替换为全局require

<script src="bundle.js"></script>
<script>
  // Require the `app` module inside of `bundle.js`
  var app = require('app');
  app.start();
</script>

我需要这样做,因为我的app.start函数要求将一些JSON传递给它,该JSON只能由服务器端模板呈现。

N.B.我正在使用Browserify v2。

最佳答案

您可以对指定的文件使用-rexpose a global require() 函数:

x.js:

module.exports = function (n) { return n * 111 }

安慰
$ browserify -r ./x.js > bundle.js

然后在您的html中:
<script src="bundle.js"></script>
<script>
    var x = require('./x.js');
    console.log(x(3))
</script>

将打印333

在您的情况下,只需执行browserify -r app即可将require('app')暴露给外部上下文。

关于javascript - Browserify v2的全局需求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15456426/

10-11 23:34