Последовательный порт с Electron-Vue.js

#javascript #node.js #vue.js #electron

#javascript #node.js #vue.js #электрон

Вопрос:

Я пытался использовать последовательный порт для прослушивания моих сообщений electron-vue.js . Когда я попытаюсь закодировать это ниже.

 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 !");
 

Я получил следующую ошибку ниже в консоли.

Ошибка типа: не удается прочитать свойство ‘modules’ undefined в 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) ввычисление (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 , он не запускался.

Спасибо

Ответ №1:

serialport использует физический ресурс, поэтому не может быть веб-упакован как клиентский пакет. вам нужно пометить serialport как внешний для конструктора.

 // vue.config.js

module.exports = {
  pluginOptions: {
    electronBuilder: {
      externals: ["serialport"],
    },
  },
},
 

Комментарии:

1. где я буду писать этот код в своем электронном проекте?

2. @SefaUn ты придумал, куда это поместить?

3. @NevilleBamshoot Я на самом деле не знаю. но я думаю, мы должны поместить это в webpack. если вы решите эту проблему, не могли бы вы ответить на этот вопрос?

4. вы должны поместить это внутрь vue.config.js вот так: // vue.config.js модуль.экспорт = { pluginOptions: { electronBuilder: { externals: [«serialport»], }, }, }