想用NW做串口程序但是出现了错误
spiritfire opened this issue · 8 comments
Chinese
你好,我是一名新手,之前使用electron,但是因为electron在我机器上启动极慢,改用nwjs。
我习惯性的在main里面写了串口代码但得到了错误和白屏。
English
Hi, i am a new comer, i use electron in last 3 month but electron got a very slow startup on my I7 computer, even VSCODE startup very slow. So i am about to change to NWJS. I wrote some serialport simple code in main.js, but i got some error as below picture shown..
system: WIN7 64 ULTIMATE
代码:
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
Vue.config.productionTip = false
import SerialPort from 'serialport'
// init serialport
let comport = new SerialPort('com1', {
baudRate: 19200
}, (err) => {
if (err) {
console.log('comport init failed' + err)
return
}
console.log('comport init success')
comport.write('hello world')
})
// for auto update
import { checkUpdate } from '@/utils/update.js'
checkUpdate()
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
template: '<App/>',
components: { App }
})
已经使用下面的命令重新编译了serialport
I have already rebuild the serialport using below command
nw-gyp rebuild --target=0.14.7 --arch=x64
请问我该怎么做?问题可能有点初级,请原谅。
what should i do to correct this? maybe the question is too low level, please help.
看起来报错是在 serialport
的代码中的 require
用了动态表达式。
首先需要检查,你是否加了 node-loader
在 webpack 的配置中。
然后这个错误,你可能需要去 webpack 的仓库下找找看有没有相关的 issue。
谢谢你的回答
我是用的你的vue-nw-seed模版,并没有动webpack配置。
那么请问是需要在里面加上node-loader么?
在这里 build/webpack.base.conf.js 这一段的末尾加 node-loader 的配置
刚看到你的回答,我今天用另外一种方式让它跑起来了,
再webpack.base.conf.js里添加
var nodeExternals = require('webpack-node-externals')
然后再后面添加:
externals: [ nodeExternals({whitelist: [/^webpack-.*/].concat(utils.getVuePackages()})]
还要再utils里加上:
exports.getVuePackages = () =>
Object.keys(require('../package.json')
.dependencies || {})
.filter(name => {
const package_json = require(`${name}/package.json`)
const keywords = package_json.keywords || []
const description = package_json.description || ''
return (/^vue$|^vuex$|(^vue-)|(-vue$)/).test(name) || keywords.indexOf('vue') >= 0 || description.includes('Vue.js')
})
我现在去试试你说的方法
按照你说的方法出现了如下错误:
ERROR in ./~/babel-loader/lib!./~/vue-loader/lib/selector.js?type=script&index=0!./src/App.vue
Module not found: Error: Can't resolve 'serialport.node' in 'E:\ELECTRON\VUE-NW-SEED2\src'
@ ./~/babel-loader/lib!./~/vue-loader/lib/selector.js?type=script&index=0!./src/App.vue 3:0-41
@ ./src/App.vue
@ ./src/main.js
@ multi ./build/dev-client ./src/main.js
请问这个怎么办啊?
这个报错的意思是 'E:\ELECTRON\VUE-NW-SEED2\src'
路径下没有 'serialport.node'
这个文件,检查路径吧
我什么都没干的情况下,错误信息又变成下面这样了。
ERROR Failed to compile with 1 errors
This dependency was not found:
* serialport.node in ./~/babel-loader/lib!./~/vue-loader/lib/selector.js?type=script&index=0!./src/App.vue
To install it, you can run: npm install --save serialport.node
> Listening at http://localhost:8080
然后我把serialport.node拷贝到了src文件夹下,依然是这个错误。
我是要把serialport.node拷贝到哪才行么?
谢谢你的回答。
这个报错和你之前的情况已经分析不出问题了。。。