У меня возникла проблема с запуском последовательного порта с angular 9.
Я написал свое приложение Angular на основе этого репо https://github.com/maximegris/angular-electron.git
Я расширил файл Electron.service.ts последовательным портом, как здесь Angular (5) -Electron Serialport Support
import { Injectable } from "@angular/core";
// If you import a module but never use any of the imported values other than as TypeScript types,
// the resulting javascript file will look as if you never imported the module at all.
import { ipcRenderer, webFrame, remote } from "electron";
import * as childProcess from "child_process";
import * as fs from "fs";
import * as SerialPort from "serialport";
@Injectable({
providedIn: "root",
})
export class ElectronService {
ipcRenderer: typeof ipcRenderer;
webFrame: typeof webFrame;
remote: typeof remote;
childProcess: typeof childProcess;
fs: typeof fs;
serialPort: typeof SerialPort;
private port;
get isElectron(): boolean {
return !!(window && window.process && window.process.type);
}
constructor() {
// Conditional imports
if (this.isElectron) {
this.ipcRenderer = window.require("electron").ipcRenderer;
this.webFrame = window.require("electron").webFrame;
this.remote = window.require("electron").remote;
this.childProcess = window.require("child_process");
this.fs = window.require("fs");
this.serialPort = window.require("serialport");
this.port = window.require("serialport").SerialPort;
}
}
connectToSerialPort(comPort) {
if (this.isElectron && comPort > "") {
this.port = new SerialPort(comPort, { baudRate: 9600 }, (err) => {
if (err) {
return console.log("Error: ", err.message);
}
});
// this.port = new SerialPort(comPort, { baudRate: 9600 }, (err) => {
// if (err) {
// return console.log("Error: ", err.message);
// }
// });
// this.port.write("main screen turn on", function (err) {
// if (err) {
// return console.log("Error on write: ", err.message);
// }
// console.log("message written");
// });
}
}
}
Когда я раскомментирую следующую часть, приложение запускается, и я вижу массив с компиляторами.
this.port = new SerialPort(comPort, { baudRate: 9600 }, (err) => {
if (err) {
return console.log("Error: ", err.message);
}
});
Но когда я пытаюсь подключить SerialPort с помощью приведенного выше кода, я получаю некоторые ошибки при компиляции ...
ERROR in ./node_modules/serialport/lib/bindings/linux-list.js
Module not found: Error: Can't resolve 'child_process' in 'C:\Users\Mitch\Documents\DEV\Aurin\node_modules\serialport\lib\bindings'
ERROR in ./node_modules/serialport/lib/bindings/unix-write.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\Mitch\Documents\DEV\Aurin\node_modules\serialport\lib\bindings'
ERROR in ./node_modules/serialport/lib/bindings/unix-read.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\Mitch\Documents\DEV\Aurin\node_modules\serialport\lib\bindings'
ERROR in ./node_modules/serialport/node_modules/bindings/bindings.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\Mitch\Documents\DEV\Aurin\node_modules\serialport\node_modules\bindings'
Далее, Я попытался установить https://github.com/angular-guru/electron-builder и изменил свой angular. json
"build": {
"builder": "@angular-guru/electron-builder:build",
...
}
"serve": {
"builder": "@angular-guru/electron-builder:dev-server",
...
}
"test": {
"builder": "@angular-guru/electron-builder:karma",
...
}
После этого компиляция прошла нормально, но в консоли появилась ошибка
Uncaught TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined
at validateString (internal/validators.js:112)
at dirname (path.js:583)
at Function.DDRE.e.getRoot (main.1b61050caa329e0dd23d.js:1)
at e (main.1b61050caa329e0dd23d.js:1)
at Object.B8w1 (main.1b61050caa329e0dd23d.js:1)
at l (runtime.7d7e9038a1cdbceb3d53.js:1)
at Object.PMc/ (main.1b61050caa329e0dd23d.js:1)
at l (runtime.7d7e9038a1cdbceb3d53.js:1)
at Object.rGkW (main.1b61050caa329e0dd23d.js:1)
at l (runtime.7d7e9038a1cdbceb3d53.js:1)
Я пробовал еще кое-что, понизить уровень последовательного порта, понизить версию электронного порта .. но без изменений.