【问题标题】:Serial Port With Electron-Vue.js带有 Electron-Vue.js 的串口
【发布时间】:2021-05-09 18:14:46
【问题描述】:

我尝试使用 electron-vue.js 做串口来监听我的 COMports。 当我尝试在下面编写代码时。

const SerialPort = require("serialport");
const Readline = SerialPort.parsers.Readline;

const port = new SerialPort("COM3", {
    baudRate: 9600,
});

const parser = new Readline();
port.pipe(parser);

//Read Data
parser.on("data", (line) => {
    console.log(line);
});

//Send Data
parser.write("Sended Data !");

我在控制台中收到以下错误。

TypeError:无法读取未定义的属性“模块” 在 Object.eval (bindings.js?dfc1:29) 在 eval (bindings.js:223) 在 Object../node_modules/bindings/bindings.js (0.js:231) 在 webpack_require (app.js:854) 在 fn (app.js:151) 在 eval (linux.js?88eb:2) 在 Object../node_modules/@serialport/bindings/lib/linux.js (0.js:65) 在 webpack_require (app.js:854) 在 fn (app.js:151) 在 Object.eval (index.js?c888:14)

我该如何解决这个问题?

顺便说一句,当我尝试在 node.js 中运行此代码时,它会运行。但是当我尝试在 Vue.js 中运行这段代码时,它并没有运行。

谢谢

【问题讨论】:

    标签: javascript node.js vue.js electron


    【解决方案1】:

    serialport 使用物理资源,因此不能作为客户端包进行 webpacked。您需要将串行端口标记为构建器的外部端口。

    // vue.config.js
    
    module.exports = {
      pluginOptions: {
        electronBuilder: {
          externals: ["serialport"],
        },
      },
    },
    

    【讨论】:

    • 在我的电子项目中我要在哪里编写这段代码?
    • @SefaUn 你知道把这个放在哪里了吗?
    • @NevilleBamshoot 我其实不知道。但我想,我们必须把它放到 webpack 中。如果你解决了这个问题,你能回答这个问题吗?
    • 你应该像这样把它放在 vue.config.js 中: // vue.config.js module.exports = { pluginOptions: { electronBuilder: { externals: ["serialport"], }, } , }
    猜你喜欢
    • 1970-01-01
    • 2018-05-07
    • 2018-01-23
    • 2020-09-01
    • 2017-01-16
    • 2017-09-28
    • 2019-07-23
    • 2020-11-12
    • 2019-03-12
    相关资源
    最近更新 更多