美文网首页SpringBoot & EasyUIWeb前端之路
在nw.js要如何优雅的使用node-printer

在nw.js要如何优雅的使用node-printer

作者: __夏悸 | 来源:发表于2019-12-10 23:53 被阅读0次

    这个坑是沉痛的,由于陷入之前的处理问题的惯性操作而浪费了三天时间,四个深夜凌晨2点。特此记录一下。

    先来说说问题

    项目用户端使用到nw.js来构建跨平台桌面应用程序,其中涉及到热敏票据的打印。对于这种比较冷门的工具来说,网上各种支持真的是有限。对于打印功能,各种寻找之后,发现只有一个node-printer是相对有点资料可用,看到这些资料之后,就开始入坑了。

    一号坑

    关于这个node-printer的使用相关文章,都是一些很老的文章,而且非常少。找到的一些内容也是千篇一律。最后总结就是,按照百度出来的文章操作,基本不可能编译成功。

    二号坑

    这个坑是node-printer的坑。这个库在GitHub上是有一直更新,但NIMA在npmjs上,它上传的并不是最新版本,而是三年前的版本。所以导致直接使用npm install printer下载下来的版本一直就是老版本。如果需要用到最新版本必须使用

    npm install git+https://github.com/thiagoelg/node-printer.git
    

    三号坑

    这个就是自己思维惯性的坑了。
    由于这些文档都是英文的,也不是看不懂,而是看起来费劲,所以就想着走走捷径。照着百度上面说的各种错误解决方案就是一通骚操作,最后结果证明,对于热门的工具,你可以相信百度。但是对于这种冷门的东西,那就只能参考了,这是血的教训。

    最后上硬菜

    在nw.js要如何优雅的使用node-printer

    一、首先你必须要先看一个nw.js官方的文档Use Native Node Modules

    如果没有回过头来认真看着这个nw.js文档,这会我估计还在抓耳挠腮想着如何解决问题。这个文档告诉了我们如何在nw.js使用原生node模块。这个文档开头就给我们指出的了操作方法。


    image.png

    如果我们在最新版本的nw.js中编译node的原生模块,那么我们要保证nw.js运行环境的node版本需要和我们开发环境的node版本保持一致。比如我们查看我们nw.js的环境信息如下


    image.png

    图中显示当前nw.js环境的node版本为13.1.0。所以就得保证本机开发环境的node版本也是这个。

    二、本机需要有Visual C++ Build Tools环境

    如果你的开发电脑有安装过Visual Studio那就可以跳过这一步,如果没有那就需要安装。建议使用windows-build-tools来安装这个环境。

    npm install --global windows-build-tools --vs2015
    

    这个预计会比较耗时,网络不好的情况可能还需多尝试几次。

    三、安装node-printer

    npm install git+https://github.com/thiagoelg/node-printer.git
    

    四、安装node-gyp

    npm install --global node-gyp
    

    五、nw.js文档中提到的如何hack node-gyp

    image.png

    最后一步

    进入cmd执行

    项目路径\node_modules\printer>node-gyp rebuild
    

    出现如下输出标识编译成功


    image.png

    Test

    在nw项目的页面中编写代码

    <script>
        var printer = nw.require("printer");
        console.log(printer);
    </script>
    

    启动nw程序F12打开devtool,看到如下输出表示node-printer编译成功


    image.png

    Tips:

    nw需要下载sdk版本才有devtools,否则f12打开是空白。

    亲~~ 码字分享不容易,如果本文恰好给你解决了问题,就请给个小❤❤吧,如果还有哪里写的不到位,可以评论留言我们一起讨论完善。笔芯....

    相关文章

      网友评论

        本文标题:在nw.js要如何优雅的使用node-printer

        本文链接:https://www.haomeiwen.com/subject/rvyngctx.html