Node.js编写简单代码触发断言错误的排查求助
Node.js 断言错误:Assertion `(expected_utf16_length) == (utf16_length)' failed.
问题重现代码
var nome = 'Pedro' var idade = 28 var sexo = 'masc' nome + ' é do sexo ' + se
触发的错误信息
C:\Program Files\WindowsApps\Microsoft.PowerShell_7.3.6.0_x64__8wekyb3d8bbwe\pwsh.exe[12740]: c:\ws\src\inspector\node_string.cc:49: Assertion `(expected_utf16_length) == (utf16_length)' failed. 1: 00007FF72674BC8F node_api_throw_syntax_error+203199 2: 00007FF7266C81D6 v8::base::CPU::num_virtual_address_bits+74438 3: 00007FF7266C85E2 v8::base::CPU::num_virtual_address_bits+75474 4: 00007FF726571BCF uv_loop_size+57695 5: 00007FF72658BFC7 uv_loop_size+165207 6: 00007FF726589496 uv_loop_size+154150 7: 00007FF72657CEE7 uv_loop_size+103543 8: 00007FF7270E7B2E v8::SharedValueConveyor::SharedValueConveyor+416270 9: 00007FF7270E772A v8::SharedValueConveyor::SharedValueConveyor+415242 10: 00007FF7270E79EF v8::SharedValueConveyor::SharedValueConveyor+415951 11: 00007FF7270E7860 v8::SharedValueConveyor::SharedValueConveyor+415552 12: 00007FF7271E228E v8::PropertyDescriptor::writable+674286 13: 00007FF6A7317277
已尝试的排查步骤
- 重装Node.js LTS版本
- 安装Node.js附加工具
- 更新PowerShell至最新版本
- 重启计算机
解决建议
这个错误属于V8引擎底层的UTF-16编码断言失败,通常和终端环境的字符处理或Node.js REPL的交互逻辑冲突有关,可尝试以下方案:
切换终端环境
改用Windows自带的命令提示符(CMD)或Git Bash等第三方终端,再运行Node.js REPL测试代码。部分场景下PowerShell的字符编码配置会与Node.js的V8引擎产生冲突。避免在REPL中输入未完成代码
先将完整代码写入.js文件,再通过node 文件名.js命令运行。这种方式可绕过REPL实时解析时的编码处理问题。调整终端字符编码
在PowerShell中执行以下命令切换为UTF-8编码,再启动Node.js:chcp 65001 node该操作让终端编码匹配V8引擎的字符处理逻辑。
禁用调试检查功能
启动Node.js时添加--no-inspect参数,避免inspector模块的字符串处理触发断言:node --no-inspect
内容的提问来源于stack exchange,提问作者Pedr21
相关产品推荐
相关产品推荐

