apache / cordova

Apache Cordova
https://cordova.apache.org/
584 stars 61 forks source link

Cannot fint module 'serialport' on build with cordova-electron #438

Closed laux98 closed 6 months ago

laux98 commented 6 months ago

Bug Report

Problem

Hello, my problem is when I include the library SerialPort in my cordova-electron projet, build crashe on windows 10 , window 11 and Ubuntu 22.04.

What is expected to happen?

Build launch and I can use serial port.

What does actually happen?

Build don't launch and error is displayed.

A JavaScript error occurred in the main process
Uncaught Exception:
Error: Cannot find module 'serialport'
Require stack:
- /pathToMyProject/cordova/platforms/electron/build/linux-unpacked/resources/app.asar/cdv-electron-main.js
- 
    at Module._resolveFilename (internal/modules/cjs/loader.js:892:15)
    at Function.n._resolveFilename (electron/js2c/browser_init.js:245:1128)
    at Module._load (internal/modules/cjs/loader.js:737:27)
    at Function.f._load (electron/js2c/asar_bundle.js:5:12913)
    at Module.require (internal/modules/cjs/loader.js:964:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/pathToMyProject/cordova/platforms/electron/build/linux-unpacked/resources/app.asar/cdv-electron-main.js:27:24)
    at Module._compile (internal/modules/cjs/loader.js:1083:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1113:10)
    at Module.load (internal/modules/cjs/loader.js:940:32)

Information

I am trying to use the serial port library on cordova-electron. When i use cordova run electron --nobuild, this work perfectly and the application is launch and I can use serialport. When i want to do the build, I use cordova build androidand there are no errors. But when I launch the build , this error is displayed :

A JavaScript error occurred in the main process
Uncaught Exception:
Error: Cannot find module 'serialport'
Require stack:
- /pathToMyProject/cordova/platforms/electron/build/linux-unpacked/resources/app.asar/cdv-electron-main.js
- 
    at Module._resolveFilename (internal/modules/cjs/loader.js:892:15)
    at Function.n._resolveFilename (electron/js2c/browser_init.js:245:1128)
    at Module._load (internal/modules/cjs/loader.js:737:27)
    at Function.f._load (electron/js2c/asar_bundle.js:5:12913)
    at Module.require (internal/modules/cjs/loader.js:964:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/pathToMyProject/cordova/platforms/electron/build/linux-unpacked/resources/app.asar/cdv-electron-main.js:27:24)
    at Module._compile (internal/modules/cjs/loader.js:1083:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1113:10)
    at Module.load (internal/modules/cjs/loader.js:940:32)

The line "cdv-electron-main.js:27:24" is

const { SerialPort } = require("serialport");

Command or Code

Create a projet with cordova-electron

npm i -g cordova
cordova create sampleApp
cd sampleApp
cordova platform add electron

Add serialport

npm i serialport

Update sampleApp/platforms/electron/platform_www

#Add this in top of file
const { SerialPort } = require("serialport");
#And after all the const declarations, add this
console.log("hello serialport : " , SerialPort);

Try it with

cordova run electron --nobuild

That work and the console.log is make.

Build the project with

cordova build electron

There are no errors

But when you try to open the executable (for exemple in window, it is in /sampleApp/platforms/electron/build/win-unpacked/HelloCordova.exe, this error message is displayed

A JavaScript error occurred in the main process
Uncaught Exception:
Error: Cannot find module 'serialport'
Require stack:
- /pathToMyProject/cordova/platforms/electron/build/linux-unpacked/resources/app.asar/cdv-electron-main.js
- 
    at Module._resolveFilename (internal/modules/cjs/loader.js:892:15)
    at Function.n._resolveFilename (electron/js2c/browser_init.js:245:1128)
    at Module._load (internal/modules/cjs/loader.js:737:27)
    at Function.f._load (electron/js2c/asar_bundle.js:5:12913)
    at Module.require (internal/modules/cjs/loader.js:964:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/pathToMyProject/cordova/platforms/electron/build/linux-unpacked/resources/app.asar/cdv-electron-main.js:27:24)
    at Module._compile (internal/modules/cjs/loader.js:1083:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1113:10)
    at Module.load (internal/modules/cjs/loader.js:940:32)

I have the same issue in Windows 10, Windows 11 and Ubuntu22.04.

Environment, Platform, Device

Version information

serialport.io : 12.0.0 node : 18.16.1 electron : 25.2.0 Ubuntu 22.04 x64 cordova : 12.0.0 cordova-electron : 3.1.0

Checklist

jcesarmobile commented 6 months ago

Closing in favor of the discussion https://github.com/apache/cordova/discussions/439