最近在做一个类收银系统,找了QT,UWP和Electron,前两个太过手生,最后选了Electron。用了vue_cli3.x构建的项目,其他一切正常,唯独node-serialport怎么编译怎么运行都是Cannot read property 'indexOf' of undefined at Function.getFileName,翻遍大江南北,终于找到解决方案,感谢stackoverflow提供的平台。
解决方案:
1、添加完serialport之后electron-rebuild;
2、webpack配置文件排除serialport模块,配置如下:
configureWebpack: { externals: { serialport: 'serialport', } }
3、复制根据electron编译生成的【bindings.node】文件到dist_electron根目录下;
4、修改public目录下的index文件,手动引入serialport:
<body> <noscript> <strong>We're sorry but wuyou_client doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> </noscript> <div id="app"></div> <!-- built files will be auto injected --> <script>const SerialPort = require('serialport');</script> </body>
做完以上操作之后即可全局使用serialport了,希望后面填坑的人可以少走我的弯路。
参考文章: