整合
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.2 KiB

4 months ago
// | ------------------------------------------------------------
// | @版本: version 0.1
// | @创建人: 【Nie-x7129】
// | @E-mail: x71291@outlook.com
// | @所在项目: fastify-template
// | @文件描述: app.js -
// | @创建时间: 2023-12-16 18:09
// | @更新时间: 2023-12-16 18:09
// | @修改记录:
// | -*-*-*- (时间--修改人--修改说明) -*-*-*-
// | =
// | ------------------------------------------------------------
const ENV = process.argv[2]?.trim().toLowerCase() || 'production'
const isDev = ENV == 'development' || ENV == 'dev' || ENV == 'develop'
import Fastify from "fastify";
import logger from "./logger.js";
import root from "./routes/index.js";
const fastify = new Fastify({
logger: {
base: null,
// timestamp: false,
transport:{
target: 'pino-pretty',
options: isDev && {
// translateTime: 'HH:MM:ss Z',
ignore: 'pid,hostname',
},
},
serializers: {
res (reply) {
// The default
return `statusCode: ${reply.statusCode}`
},
req (request) {
return request.ip + ':' + request.socket.remotePort + ' ==> ' + request.method.toUpperCase() + ' - ' + request.hostname + request.url;
}
}
}
});
fastify.decorate('logger',logger)
// 请求拦截
fastify.addHook('onRequest', function (request, reply, done) {
// isDev && (this.logger.debug(`<== ${request.method.toUpperCase()} - ${request.routeOptions.url}`));
// isDev && (request.startTime = performance.now());
done();
})
// 响应拦截
fastify.addHook('onResponse', function (request, reply, done){
// isDev && (this.logger.debug(`==> ${(performance.now() - request.startTime).toFixed(4)}ms `))
done();
});
fastify.register(root, {prefix: '/api'})
async function start(){
try {
const a = await fastify.listen({
port: 3000,
host: '0.0.0.0',
})
// console.log(fastify.printPlugins())
console.log(fastify.printRoutes({ commonPrefix: false }));
// console.log(fastify.printRoutes({ method: 'GET' }));
}catch (e) {
console.error('项目启动失败', e)
}
}
start()