node.js - Apsolutni uvoz ne radi s fastify-autoload
Pravim Fastify aplikaciju s TypeScriptom i imam problema s korištenjem apsolutnog importiranja.
{
"extends": "fastify-tsconfig",
"compilerOptions": {
"outDir": "dist",
"sourceMap": true,
"experimentalDecorators": true,
"strictPropertyInitialization": false,
"baseUrl": "src",
"emitDecoratorMetadata": true
},
"include": ["src/**/*.ts", "src"]
}
Ovo je moja datoteka tsconfig.json.
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;
I ovo je dio gdje sam koristio apsolutni uvoz.
Visual Studio Code ne prikazuje pogrešku s ovim, ali kada pokrenem aplikaciju, pojavljuje se pogreška MODULE_NOT_FOUND.
Pretpostavljam da je to zbog fastify-autoload dodatka. Naravno, mogao bih koristiti import s relativnom putanjom, ali to bi kod učinilo neurednim i teškim za čitanje, pa se nadam da ću to moći izbjeći.
Ako netko ima iskustva s ovim, molim vas pomozite mi.
Odgovor #1
Pronašao sam alternativno rješenje korištenja tsc-alias. Evo moje tsconfig.json datoteke.
{
"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"]
}
