所以我有一个节点服务器-该服务器的一部分是一组文件,这些文件将对象解析为另一个库所需的形式。
除了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 = name
在main.js
中。同样的问题。
我在这里误解或做错了什么?
答案 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>