在带有Browserify的浏览器中使用我自己的Node模块

时间:2018-09-03 10:28:06

标签: javascript node.js browserify

所以我有一个节点服务器-该服务器的一部分是一组文件,这些文件将对象解析为另一个库所需的形式。

除了ES6和使用大量module.exports之外,这组文件没有什么特别的-没有依赖关系,只是纯JS。

我希望能够在浏览器中使用此解析器脚本-除了将字符串作为输入并返回解析的对象之外,我无需担心任何其他事情。

似乎我可以使用Browserify将解析脚本转换为可以在浏览器中运行的内容。但是,我已经阅读了他们的全部文档,并且似乎无法使其正常工作。

假设我将解析器库包装在以下脚本中:

const parse = require('./parser);

module.exports = function (s) {
    return parse(s);
}

我运行browserify main.js > bundle.js

从他们的文档中看来,我似乎应该能够将以下标记添加到我的HTML中:

<script src="bundle.js"></script>

然后,我希望能够在该页面上的脚本中执行以下操作:

const result = bundle(s);捕获通过我的包分析字符串的结果。这就是文档似乎在演示的内容。

但是,这仅给出了ReferenceError: bundle is not defined。在网上浏览了非常模糊的信息之后,我还尝试了声明要在main.js中导出的命名函数,然后尝试执行name(s)bundle.name(s);,并且还尝试了window.name = namemain.js中。同样的问题。

我在这里误解或做错了什么?

1 个答案:

答案 0 :(得分:0)

解决方案是在main.js中执行以下操作:

const parse = require('./parser');

function process(string) {
    return parse(string);
}

window.process = process;

然后运行browserify main.js -o bundle.js

之后,我可以在index.html中进行

<script src="bundle.js"></script>
<script>
    window.onload = function() {
        const result = process("my query string");
        // do what you want
    }
</script>