[英]Using my own Node module in browser with Browserify
所以我有一個節點服務器-該服務器的一部分是一組文件,這些文件將對象解析為另一個庫所需的形式。
這套文件沒有什么特別的-沒有依賴關系,只有純JS-除了它是ES6並使用了許多module.exports
。
我希望能夠在瀏覽器中使用此解析器腳本-除了將字符串作為輸入並返回解析的對象之外,我無需擔心任何其他事情。
看來我可以使用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);
,並且還嘗試在main.js
執行window.name = name
。 同樣的問題。
我在這里誤解或做錯了什么?
解決方案是在main.js
執行以下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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.