Rocket1184/electron-netease-cloud-music

Windows 10 启动DevServer报错不可引入外部模块

Yuyuko1024 opened this issue · 3 comments

NodeJS版本为 18.14.2 LTS,yarn版本 1.22.19。在安装完依赖以后运行yarn dev后报错,但是还是正常的走了webpack流程

PS D:\Desktop\electron-netease-cloud-music> yarn dev
yarn run v1.22.19
$ node script/dev-server.js
<i> [webpack-dev-server] Project is running at:
<i> [webpack-dev-server] Loopback: http://localhost:24353/
<i> [webpack-dev-server] On Your Network (IPv4): http://192.168.110.116:24353/
<i> [webpack-dev-server] Content not from webpack is served from 'D:\Desktop\electron-netease-cloud-music\src\renderer' directory

Debugger listening on ws://127.0.0.1:5858/6b82bf0f-3fe1-4e7c-88b8-6f3a2410cd57
For help, see: https://nodejs.org/en/docs/inspector
App threw an error during load
D:\Desktop\electron-netease-cloud-music\src\main\index.js:1
import { join } from 'path';
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at Object.compileFunction (node:vm:352:18)
    at wrapSafe (node:internal/modules/cjs/loader:1040:15)
    at Module._compile (node:internal/modules/cjs/loader:1076:27)
    at Module._compile (D:\Desktop\electron-netease-cloud-music\node_modules\pirates\lib\index.js:136:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1175:10)
    at Object.newLoader [as .js] (D:\Desktop\electron-netease-cloud-music\node_modules\pirates\lib\index.js:141:7)
    at Module.load (node:internal/modules/cjs/loader:988:32)
    at Module._load (node:internal/modules/cjs/loader:829:12)
    at c._load (node:electron/js2c/asar_bundle:5:13343)
    at Module.require (node:internal/modules/cjs/loader:1012:19)

还有突然想了解一下本项目支持在Windows构建并打包Windows版本吗

rocka commented

App threw an error during load 这个错误看起来像是 electron 报的,不过这里

const electron = exec([
'electron',
absPath('/src/main/index.dev.js'),
'--inspect=5858',
'--remote-debugging-port=5959'
].join(' '));

启动的是 index.dev.js ,有加载 @babel/register

require('@babel/register')({

不应该报 SyntaxError 才对 ... 不过我从来没有在 windows 上运行过 dev server ,也不好说是哪里的问题,可以尝试把上面 absPath('/src/main/index.dev.js') 里的路径改成 windows 用的反斜杠,或者排查一下为什么没有用到 @babel/register

在 windows 上运行是没问题的,可以参考 #108 ,只要下载一个 electron 的二进制包,解压开,然后把 release 里面的 asar 文件重命名,并放到对应的目录就可以了。

咱试了下使用Windows反斜杠路径启动会导致Electron自行关闭🤔
不过现在也没什么太大的原生平台编译需求了,因为已经靠WSL2跨平台编译了win32 x64版app了😋感谢大佬的努力

rocka commented

找了一台 windows 的机器试了一下,确实是路径处理的问题,只不过找错地方了

这里 only 的正则是没法匹配 windows 的路径的

b108be3 已经修复了

const srcMainDir = __dirname;

only: [
(filename) => filename.startsWith(srcMainDir)
],