這個(gè)坑是沉痛的胞此,由于陷入之前的處理問題的慣性操作而浪費(fèi)了三天時(shí)間,四個(gè)深夜凌晨2點(diǎn)跃捣。特此記錄一下漱牵。
先來說說問題
項(xiàng)目用戶端使用到nw.js來構(gòu)建跨平臺(tái)桌面應(yīng)用程序,其中涉及到熱敏票據(jù)的打印枝缔。對(duì)于這種比較冷門的工具來說布疙,網(wǎng)上各種支持真的是有限。對(duì)于打印功能愿卸,各種尋找之后灵临,發(fā)現(xiàn)只有一個(gè)node-printer是相對(duì)有點(diǎn)資料可用,看到這些資料之后趴荸,就開始入坑了儒溉。
一號(hào)坑
關(guān)于這個(gè)node-printer的使用相關(guān)文章,都是一些很老的文章发钝,而且非常少顿涣。找到的一些內(nèi)容也是千篇一律。最后總結(jié)就是酝豪,按照百度出來的文章操作涛碑,基本不可能編譯成功。
二號(hào)坑
這個(gè)坑是node-printer的坑孵淘。這個(gè)庫(kù)在GitHub上是有一直更新蒲障,但NIMA在npmjs上,它上傳的并不是最新版本,而是三年前的版本揉阎。所以導(dǎo)致直接使用npm install printer下載下來的版本一直就是老版本庄撮。如果需要用到最新版本必須使用
npm install git+https://github.com/thiagoelg/node-printer.git
三號(hào)坑
這個(gè)就是自己思維慣性的坑了。
由于這些文檔都是英文的毙籽,也不是看不懂洞斯,而是看起來費(fèi)勁,所以就想著走走捷徑坑赡。照著百度上面說的各種錯(cuò)誤解決方案就是一通騷操作烙如,最后結(jié)果證明,對(duì)于熱門的工具垮衷,你可以相信百度厅翔。但是對(duì)于這種冷門的東西,那就只能參考了搀突,這是血的教訓(xùn)刀闷。
最后上硬菜
在nw.js要如何優(yōu)雅的使用node-printer
一、首先你必須要先看一個(gè)nw.js官方的文檔Use Native Node Modules仰迁。
如果沒有回過頭來認(rèn)真看著這個(gè)nw.js文檔甸昏,這會(huì)我估計(jì)還在抓耳撓腮想著如何解決問題。這個(gè)文檔告訴了我們?nèi)绾卧趎w.js使用原生node模塊徐许。這個(gè)文檔開頭就給我們指出的了操作方法施蜜。
如果我們?cè)谧钚掳姹镜膎w.js中編譯node的原生模塊,那么我們要保證nw.js運(yùn)行環(huán)境的node版本需要和我們開發(fā)環(huán)境的node版本保持一致雌隅。比如我們查看我們nw.js的環(huán)境信息如下
圖中顯示當(dāng)前nw.js環(huán)境的node版本為13.1.0翻默。所以就得保證本機(jī)開發(fā)環(huán)境的node版本也是這個(gè)。
二恰起、本機(jī)需要有Visual C++ Build Tools環(huán)境
如果你的開發(fā)電腦有安裝過Visual Studio那就可以跳過這一步修械,如果沒有那就需要安裝。建議使用windows-build-tools來安裝這個(gè)環(huán)境检盼。
npm install --global windows-build-tools --vs2015
這個(gè)預(yù)計(jì)會(huì)比較耗時(shí)肯污,網(wǎng)絡(luò)不好的情況可能還需多嘗試幾次。
三吨枉、安裝node-printer
npm install git+https://github.com/thiagoelg/node-printer.git
四蹦渣、安裝node-gyp
npm install --global node-gyp
五、nw.js文檔中提到的如何hack node-gyp
最后一步
進(jìn)入cmd執(zhí)行
項(xiàng)目路徑\node_modules\printer>node-gyp rebuild
出現(xiàn)如下輸出標(biāo)識(shí)編譯成功
Test
在nw項(xiàng)目的頁(yè)面中編寫代碼
<script>
var printer = nw.require("printer");
console.log(printer);
</script>
啟動(dòng)nw程序F12打開devtool貌亭,看到如下輸出表示node-printer編譯成功
Tips:
nw需要下載sdk版本才有devtools柬唯,否則f12打開是空白。