我正试图从迁移运行在Vercel上的Next.js项目
"pino-datadog": "2.0.2",
"pino-multi-stream": "6.0.0",
至
"pino": "8.4.2",
"pino-datadog-transport": "1.2.2",
我从皮诺数据狗传输的README.md:复制设置
import { LoggerOptions, pino } from 'pino'
const pinoConf: LoggerOptions = {
level: 'trace',
}
const logger = pino(
pinoConf,
pino.transport({
target: 'pino-datadog-transport',
options: {
ddClientConf: {
authMethods: {
apiKeyAuth: process.env.DATADOG_API_KEY,
},
},
ddServerConf: {
site: 'datadoghq.eu',
},
service: process.env.VERCEL_URL
ddsource: 'nodejs',
},
}),
)
这似乎在本地运行良好,但当我在Vercel上发布并运行它时,我会收到以下错误:
ERROR Error: unable to determine transport target for "pino-datadog-transport"
at fixTarget (/var/task/node_modules/pino/lib/transport.js:136:13)
at Function.transport (/var/task/node_modules/pino/lib/transport.js:110:22)
我是不是缺少一些额外的配置来让它正常工作?还有其他人在运行这个设置或类似的东西,以便用Next.js在Vercel上运行显式日志吗?
我也在Vercel中启用了Datadog集成,但它只转发Next.js日志,而不是明确的console.logs
或标准的Pino日志。
这个问题的解决方案是导入,即使导入中的任何内容实际上都没有在代码中使用。
Next.js似乎删除了部署代码时未导入的所有代码。
因此,添加
import 'pino-datadog-transport'
位于文件顶部解决了问题。