sim*_*ner 7 datadog next.js vercel pinojs
我正在尝试将在 Vercel 上运行的 Next.js 项目从
"pino-datadog": "2.0.2",
"pino-multi-stream": "6.0.0",
Run Code Online (Sandbox Code Playgroud)
到
"pino": "8.4.2",
"pino-datadog-transport": "1.2.2",
Run Code Online (Sandbox Code Playgroud)
我从 pino-datadog-transport 的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',
},
}),
)
Run Code Online (Sandbox Code Playgroud)
这似乎在本地工作正常,但是当我在 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)
Run Code Online (Sandbox Code Playgroud)
我是否缺少一些额外的配置来使其正常工作?还有其他人运行此设置或类似的东西来使用 Next.js 在 Vercel 上获取显式日志吗?
我也在 Vercel 中启用了 Datadog 集成,但console.logs据我所知,这只转发 Next.js 日志,而不是显式或标准的 Pino 日志。
此问题的解决方案是导入,即使代码中实际未使用导入中的任何内容。
Next.js 似乎删除了部署代码时未导入的所有代码。
所以,添加
import 'pino-datadog-transport'
Run Code Online (Sandbox Code Playgroud)
文件顶部的解决了这个问题。
| 归档时间: |
|
| 查看次数: |
1525 次 |
| 最近记录: |