#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»], }, }, }