A JavaScript error occurred in the main process,进程常驻(主进程/zygote/GPU/network 都在),但始终不创建 renderer,拿不到窗口。node:zlib 使用静态具名导入 createZstdDecompress,而 loongarch64 包内置的 Electron 31.7.7 / Node v20.18.0 没有这个导出(zlib zstd 支持自 Node 22.15.0 才有)。ESM 在模块实例化阶段即抛 SyntaxError,主进程在 app.whenReady() 之前就退出。undefined,不会抛错。| 项 | 值 |
|---|---|
| 发行版 | Loongnix GNU/Linux 25 (loongnix) |
| 内核 | 6.6.52-loong64 |
| 架构 | loong64 |
| 安装包 | qoder-cn 1:0.5.7 (loong64),Installed-Size 1097587 |
| deb sha256 | b7ce0cafbacc6f4db3744bdc89220c3ce680526fdd7148f9997a47b8c548d56f |
| 运行时 | /opt/Qoder CN/qoder-cn → ELF 64-bit LoongArch;Electron 31.7.7;Node v20.18.0 |
| 显示 | X11, DISPLAY=:0 |
| 对比版本 | qoder 1:0.4.11 (loong64),同运行时,可正常启动 |
sudo dpkg -i Qoder-CN-linux-loongarch64.deb
timeout 20 /opt/"Qoder CN"/qoder-cn --user-data-dir=$(mktemp -d) 2>&1 | grep -m1 -A2 SyntaxError
无需登录、无需旧配置,--user-data-dir 指向空目录同样复现。
A JavaScript error occurred in the main process
Uncaught Exception:
file:///opt/Qoder%20CN/resources/app.asar/out/main/electronMain.js:1
import*as vHx from"electron";import{app as $x,...}from"./chunks/CObf1AlQ.js";...
SyntaxError: The requested module 'node:zlib' does not provide an export named 'createZstdDecompress'
at ModuleJob._instantiate (node:internal/modules/esm/module_job:146:21)
at async ModuleJob.run (node:internal/modules/esm/module_job:229:5)
at async ModuleLoader.import (node:internal/modules/esm/loader:473:24)
at async file:///opt/Qoder%20CN/resources/app.asar/out/main/index.js:1:7591
进程状态(错误对话框驻留,无 renderer):
$ ps -eo args | grep "Qoder CN/qoder-cn" | grep -c type=renderer
0
正常创建窗口并进入登录页。
打包产物 resources/app.asar 内 out/main/electronMain.js(bundle 为单行),偏移 47522250:
import nJ,{deflateRaw as n2x,createDeflateRaw as sYx,gunzipSync as oYx,
createZstdDecompress as vYx,inflateRawSync as wYx,deflateRawSync as LYx}from"node:zlib";
SyntaxError,与是否走到 zstd 分支无关。const{...,createZstdDecompress:f}=nJ(从默认导入解构),加载期安全,只有真正解 zstd 响应时才会用到。运行时验证:
$ ELECTRON_RUN_AS_NODE=1 /opt/"Qoder CN"/qoder-cn -e \
'console.log(process.version, typeof require("node:zlib").createZstdDecompress)'
v20.18.0 undefined # 包内运行时
$ node -v && node -e 'console.log(typeof require("zlib").createZstdDecompress)'
v22.16.0
function # Node 22.15.0 起提供
版本对比:
| 版本 | 写法 | 结果 |
|---|---|---|
| 0.4.11 | const{createZstdDecompress:a}=xE(默认导入解构) | 正常启动,zstd 不可用时仅该分支失效 |
| 0.5.7 | import {createZstdDecompress as vYx} from "node:zlib" | 链接期 SyntaxError,无法启动 |
zlib.createZstdDecompress 的版本(Node ≥ 22.15.0,即 Electron 33 之后较新的版本),并与其他架构的产物保持一致。import nJ from "node:zlib";
const vYx = nJ.createZstdDecompress; // 不存在则不注册 zstd 解码器
这样在缺失时只降级,不阻断启动(0.4.11 即此写法)。node:* 具名导入做一次“目标 Electron 内置 Node 版本导出表”校验,避免以后再用到新 Node API。对上面 20 字节做等长替换 createZstdDecompress → createBrotliCompress(不影响 asar 头偏移),启动恢复正常,窗口标题 Qoder CN。仅当服务端返回 Content-Encoding: zstd 时该分支会失败,日常使用不触发。
日志中出现 inotify_init() failed: 打开的文件过多 (24),本机 fs.inotify.max_user_instances=128 被占满。建议在文档中提示调高该值,或对 EMFILE 做降级处理,否则文件监看/工作区索引会静默失效。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Qoder CN 0.5.7 在 loongarch64 平台无法运行属预期情况。检索显示,截至2026年6月该版本仅支持x86架构,龙芯平台安装时直接提示无可用二进制包,ESM链接失败系缺失原生运行时所致。
官方于2026年10月23日才正式宣布支持LoongArch64及统信UOS、银河麒麟系统。因此0.5.7不具备龙芯兼容能力,且无针对该版本的修复计划。
建议从官网下载10月23日后发布的新版。若新版仍崩溃,可检查.lingma目录权限、网络代理及防火墙白名单.
官方详细解决方案:https://www.aliyun.com/product/lingma
Qoder CN 是 Qoder CN 系列中面向软件开发场景的核心子产品(原“通义灵码”),提供 IDE、JetBrains 插件、Visual Studio Code 插件等多种使用形态。Qoder CN 持续提供代码智能生成、智能问答、多文件修改、编程智能体等能力,并在模型选择、专家协作、任务规划等方向全面升级,为开发者带来高效、流畅的编码体验。同时面向企业客户提供企业标准版、企业专属版,具备企业级场景自定义、私域知识增强等能力,助力企业研发智能化升级。