node.js - Nhập tuyệt đối không hoạt động với fastify-autoload
Tôi đang xây dựng ứng dụng fastify với typescript và tôi đang gặp vấn đề với việc sử dụng import tuyệt đối.
{
"extends": "fastify-tsconfig",
"compilerOptions": {
"outDir": "dist",
"sourceMap": true,
"experimentalDecorators": true,
"strictPropertyInitialization": false,
"baseUrl": "src",
"emitDecoratorMetadata": true
},
"include": ["src/**/*.ts", "src"]
}
Đây là tệp tsconfig.json của tôi.
import { User } from "entity/User";
import { FastifyPluginAsync } from "fastify";
const example: FastifyPluginAsync = async (fastify, opts): Promise<void> => {
fastify.get("/", async function (request, reply) {
const users = await fastify.db.manager.find(User);
return users;
});
};
export default example;
Và đây là phần mà tôi đã sử dụng import tuyệt đối.
Visual Studio Code không hiển thị lỗi với điều này nhưng khi tôi chạy ứng dụng, xảy ra lỗi MODULE_NOT_FOUND.
Tôi đoán điều này là do plugin fastify-autoload. Tất nhiên, tôi có thể sử dụng import với đường dẫn tương đối, nhưng điều đó sẽ làm mã trở nên lộn xộn và khó đọc, vì vậy tôi hy vọng tôi có thể xử lý được vấn đề này.
Nếu ai có kinh nghiệm về việc này, xin hãy giúp tôi.
Câu trả lời #1
Tôi đã tìm ra một giải pháp thay thế bằng cách sử dụng tsc-alias. Đây là file tsconfig.json của tôi.
{
"extends": "fastify-tsconfig",
"compilerOptions": {
"outDir": "dist",
"sourceMap": true,
"experimentalDecorators": true,
"strictPropertyInitialization": false,
"baseUrl": "src",
"emitDecoratorMetadata": true,
"paths": {
"@entity/*": ["entity/*"],
"@controllers/*": ["controllers/*"]
}
},
"tsc-alias": {
"verbose": false,
"resolveFullPaths": true
},
"include": ["src/**/*.ts", "src"]
}
