use*_*053 8 typescript next.js pinojs next.js13 pino
我使用 create-next-app 使用 typescript 创建了一个 Next.js 项目。为了记录这个特定项目,我决定使用 Pino 日志库,因为它是 Next.js 本身推荐的。
当我使用没有传输功能的 Pino 时,它运行得非常好。下面是完美运行的 pino 定义代码:-
import pino from 'pino';
const logger = pino({
level: process.env.NEXT_PUBLIC_LOG_LEVEL,
formatters: {
level: (label) => {
return { level: label.toUpperCase() };
},
bindings: (bindings) => {
return { host: bindings.hostname };
},
},
});
export default logger;
Run Code Online (Sandbox Code Playgroud)
但是当我使用 Pino 传输时,代码如下所示(我已安装 pino-pretty 作为开发依赖项):-
import pino from 'pino';
const logger1 = pino({
transport: {
target: 'pino-pretty',
},
});
logger1.info('hi');
export default logger1;
Run Code Online (Sandbox Code Playgroud)
我收到下面提到的错误
- error uncaughtException: Error: Cannot find module 'C:\starttwo-productionlot-frontend\.next\server\app\home\lib\worker.js'
at Module._resolveFilename (node:internal/modules/cjs/loader:1075:15)
at Module._load (node:internal/modules/cjs/loader:920:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at MessagePort.<anonymous> (node:internal/main/worker_thread:164:24)
at [nodejs.internal.kHybridDispatch] (node:internal/event_target:737:20)
at exports.emitMessage (node:internal/per_context/messageport:23:28) {
digest: undefined
}
- error node_modules\thread-stream\index.js (195:31) @ Worker.onWorkerExit
- error uncaughtException: Error: the worker thread exited
at Worker.onWorkerExit (webpack-internal:///(sc_server)/./node_modules/thread-stream/index.js:163:34)
at Worker.emit (node:events:513:28)
at [kOnExit] (node:internal/worker:289:10)
at Worker.<computed>.onexit (node:internal/worker:209:20)
at Worker.callbackTrampoline (node:internal/async_hooks:130:17) {
digest: undefined
}
Run Code Online (Sandbox Code Playgroud)
我也遇到了与此代码相同的错误(这里我有一个问题,我们需要使用 npm 安装 pino/file 吗?):-
import pino from 'pino';
const transport = pino.transport({
target: 'pino/file',
options: { destination: '/path/to/file' }
})
pino(transport)
Run Code Online (Sandbox Code Playgroud)
我在服务器端使用记录器,仅在 next.js page.tsx 文件中没有“使用客户端”指令您能请我解决此错误吗
我尝试实现 pino 官方文档中提供的示例代码,但我得到了与上述相同的错误,代码如下:-
在 my-transport.tsx 中:-
import { createWriteStream } from 'fs'
export default () => {
return createWriteStream('.../app/app.log)')// /app/app.log -- location of log file
}
Run Code Online (Sandbox Code Playgroud)
在 logger.tsx 中:-
const pino = require('pino')
const transport = pino.transport({
target: '/absolute/path/to/my-transport.mjs'
})
export default pino(transport)
Run Code Online (Sandbox Code Playgroud)
在 next.js 中使用 pino.transport() 是否有任何限制?我们可以在客户端和服务器端使用它吗?我如何使用 pino 中的传输功能?
你有.../path/而不是../path/(一个.太多)
但这并不能解决问题。
\n解决方案
\n您在网络服务器上。除非您配置自定义服务器(这是可能的),否则您无法使用 Next.js 导航到网络服务器的根目录之后,更多信息如下:
\n\n\n\xe2\x9a\xa0\xef\xb8\x8f 建议
\n您应该放置.gitignore该.next目录,因此无论您尝试什么,都应该将其放入另一个目录。
如果该文件位于网络服务器根目录内,则:
\n推荐:
\n/*\n * __dirname current directory\n * process.cwd() directory where process/server was started\n */\nimport path from "path";\n\n// concatenation of paths (e.g. to avoid `/` issues\npath.join(__dirname, "where/you/want/to/go");\n\n// or to get the absolute path\npath.resolve(__dirname, "where/you/want/to/go");\n\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1490 次 |
| 最近记录: |