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
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()
|