這個賞金已經結束。此問題的答案有資格獲得 50聲望賞金。賞金寬限期在7 小時后結束。 beeef正在從有信譽的來源尋找答案。
我正在開發一個使用 Electron 和 React 創建的軟體專案。我沒有從頭開始創建專案,我使用的是使用 Webpack 的樣板。
該軟體用于管理(銷售和兌換)優惠券,因此我還必須列印一些收據。通過網路使用列印機作業正常,就像它應該的那樣。對于列印,我使用的是node-thermal-printer包(https://www.npmjs.com/package/node-thermal-printer)。
但有些列印機沒有網路介面,只有 USB 或串行介面。
當使用node-thermal-printer帶有USB連接的列印機,你必須提供一個“驅動程式”,以便能夠列印。他們建議使用electron-printerorprinter模塊,它們似乎都是本機 NodeJS 模塊。
樣板檔案似乎為當前使用的架構編譯本機模塊并創建一個*.node檔案,該.wepback/檔案在構建階段被復制到檔案夾中。但是一旦我想使用這個包,我就會得到一個找不到模塊的錯誤。
我正在使用以下行匯入模塊:
const printerDriver = require("printer");
運行npm start本機依賴項時,會編譯并node_printer.node創建一個檔案并將其復制到.webpack/main/native_modules/lib/node_printer.node.
當我單擊列印按鈕時,我收到以下錯誤:
Error: Cannot find module '/Users/stefan/Documents/Dev/vouchers/.webpack/main/native_modules/lib/node_printer.node'
但該檔案肯定存在。當我使用絕對路徑匯入列印機模塊時,就像const printerDriver = require("/Users/stefan/Documents/Dev/vouchers/node_modules/printer/build/Release/node_printer.node");它正在作業一樣 - 但這對我來說不是解決方案。
這是我的webpack.rules.js檔案,它是使用樣板模板生成的:
module.exports = [
// Add support for native node modules
{
// We're specifying native_modules in the test because the asset relocator loader generates a
// "fake" .node file which is really a cjs file.
test: /native_modules\/. \.node$/,
use: "node-loader",
},
{
test: /\.(m?js|node)$/,
parser: { amd: false },
use: {
loader: "@vercel/webpack-asset-relocator-loader",
options: {
outputAssetBase: "native_modules",
},
},
},
// ....
]
我花了大約 3 個小時才在互聯網上搜索解決方案,但我找不到任何解決問題的方法。
任何幫助表示贊賞。謝謝!
uj5u.com熱心網友回復:
我想我剛剛找到了解決方案。我在我的配置中提供了一個配置webpack.config.js并將printer模塊設定為外部模塊,如下所示:
webpack.config.js:
module.exports = {
// ...
externals: {
printer: "printer",
}
};
該死的,如果我早點嘗試,我會為自己節省大量的研究時間。沒關系,我希望我可以幫助其他人解決這個問題。
uj5u.com熱心網友回復:
您可以使用以下解決方案重建它,而不是硬編碼 require 中的絕對路徑:
let path = require('path')
let printerDriver = require(path.join(__dirname,'node_modules/printer/build/Release/node_printer.node')
//do stuff
它不是最好的,但我多次使用它來解決這類問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/406596.html
標籤:
