发布于 

nodejs24 No such module http_parser

最近入了 Arch Linux。

在用 WebStorm 运行我之前的一个项目时,出现以下错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/usr/bin/npm run dev

> xcollector-web@1.0.0 dev
> webpack-dev-server --inline --progress --config build/webpack.dev.conf.js

node:internal/bootstrap/realm:162
throw new Error(`No such module: ${module}`);
^

Error: No such module: http_parser
at process.binding (node:internal/bootstrap/realm:162:11)
at Object.<anonymous> (/home/asd/data/WebProject/xcollector-web/node_modules/http-deceiver/lib/deceiver.js:22:24)
at Module._compile (node:internal/modules/cjs/loader:1692:14)
at Object..js (node:internal/modules/cjs/loader:1824:10)
at Module.load (node:internal/modules/cjs/loader:1427:32)
at Module._load (node:internal/modules/cjs/loader:1250:12)
at TracingChannel.traceSync (node:diagnostics_channel:322:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)
at Module.require (node:internal/modules/cjs/loader:1449:12)
at require (node:internal/modules/helpers:135:16)

Node.js v24.4.1

进程已结束,退出代码为 1

关键错误信息为 Error: No such module: http_parser,搜了一下,都说是 NodeJS 24 版本不兼容。

很多都是说降级,但是我尝试降级,发现我的 Arch 似乎只能运行 24 版本的 NodeJS,其他版本直接报错。

于是尝试换种方式,最后找到了解决办法。

只需要安装 http-parser-js

1
npm i http-parser-js

然后点击对应报错的文件,我这里是 /home/asd/data/WebProject/xcollector-web/node_modules/http-deceiver/lib/deceiver.js,对应行内容如下:

1
HTTPParser = process.binding('http_parser').HTTPParser;

直接给他改掉,换成下面的:

1
HTTPParser = require('http-parser-js').HTTPParser;

再次运行,ok 解决!

I use Arch btw.