Arch Linux下启动Next.js开发服务器遇断言错误求助
Next.js 在 Arch Linux 下
yarn run dev 启动失败排查与解决 问题概述
Arch Linux 环境中执行 yarn run dev 启动 Next.js 应用时触发 Node.js 断言错误并核心转储,相同项目在 Windows 可正常运行,纯 React 项目在 Arch Linux 也能正常启动。
已执行的排查操作
- 重新安装 Node.js
- Windows 环境验证项目可正常启动
错误日志
> next-cafegent@0.1.0 dev > next dev node[61231]: ../src/module_wrap.cc:599:v8::MaybeLocal<v8::Promise> node::loader::ImportModuleDynamically(v8::Local<v8::Context>, v8::Local<v8::Data>, v8::Local<v8::Value>, v8::Local<v8::String>, v8::Local<v8::FixedArray>): Assertion `(it) != (env->id_to_function_map.end())' failed. 1: 0x7f60cea96e8d node::Abort() [/usr/bin/../lib/libnode.so.111] 2: 0x7f60cea971d6 node::Assert(node::AssertionInfo const&) [/usr/bin/../lib/libnode.so.111] 3: 0x7f60cea49a4d [/usr/bin/../lib/libnode.so.111] 4: 0x7f60cefd847a v8::internal::Isolate::RunHostImportModuleDynamicallyCallback(v8::internal::MaybeHandle<v8::internal::Script>, v8::internal::Handle<v8::internal::Object>, v8::internal::MaybeHandle<v8::internal::Object>) [/usr/bin/../lib/libnode.so.111] 5: 0x7f60cf412b18 v8::internal::Runtime_DynamicImportCall(int, unsigned long*, v8::internal::Isolate*) [/usr/bin/../lib/libnode.so.111] 6: 0x7f60ced5a5f4 [/usr/bin/../lib/libnode.so.111] zsh: IOT instruction (core dumped) npm run dev
解决方法
- 匹配 Node.js 与 Next.js 版本
Arch Linux 官方源的 Node.js 版本通常偏新,可能与项目依赖的 Next.js 版本存在兼容性冲突。使用版本管理器切换到项目指定的 Node.js 版本:
- 通过 AUR 安装
nvm包 - 执行
nvm install <项目要求的 Node.js 版本> - 切换版本:
nvm use <版本号> - 重新执行
yarn run dev
- 清理依赖并重装
- 删除本地依赖目录:
rm -rf node_modules - 删除 yarn 锁文件:
rm yarn.lock - 重新安装依赖:
yarn install - 再次尝试启动项目
降级 Next.js 版本
若当前 Next.js 版本与新版 Node.js 不兼容,修改package.json中next的版本号为稳定兼容版本,然后重新安装依赖。排查动态导入代码
错误日志指向动态导入相关逻辑,暂时注释项目中的动态导入代码,验证是否为该问题导致。若注释后可正常启动,再逐步排查具体的动态导入模块。
内容的提问来源于stack exchange,提问作者Debarka Mondal
相关产品推荐
相关产品推荐

