簡體   English   中英

在帶有Browserify的瀏覽器中使用我自己的Node模塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM