Pino transport函数无法使用,及worker_threads模块缺失问题排查
Pino日志库transport相关错误原因解析
第一个错误:TypeError: pino__WEBPACK_IMPORTED_MODULE_0___default(...).transport is not a function
pino.transport()是Pino v8版本才新增的API,如果你安装的是v7或更早版本,自然找不到这个方法。而直接在pino()构造器里传入transport配置对象的写法,在v7及更早版本是兼容的,所以第一种代码能正常运行。- 你使用的是Next.js同构项目,Pino的客户端编译版本(用于浏览器环境的部分)不包含
transport这类服务端专属API——因为浏览器环境不支持相关Node.js特性,所以哪怕你装了Pino v8,在客户端代码里调用pino.transport()也会报这个错。
第二个错误:Module not found: Can't resolve 'worker_threads'
pino-pretty依赖Node.js内置的worker_threads模块实现异步日志处理,但浏览器环境(包括Next.js的客户端编译流程)不存在这个模块,所以手动导入pino-pretty会让Webpack尝试解析这个不存在的依赖,直接报错。- 第一种写法里,Pino在浏览器环境下会自动跳过transport配置(它知道pino-pretty无法在浏览器运行),所以不会触发这个问题;但你主动导入
pino-pretty打破了这个逻辑,强制Webpack去处理它的依赖链。
内容的提问来源于stack exchange,提问作者J.Doe
相关产品推荐
相关产品推荐

