node.js - Absoluter Import funktioniert nicht mit fastify-autoload
Ich baue eine Fastify-Anwendung mit TypeScript und habe Probleme mit der Verwendung von absoluten Importen.
{
"extends": "fastify-tsconfig",
"compilerOptions": {
"outDir": "dist",
"sourceMap": true,
"experimentalDecorators": true,
"strictPropertyInitialization": false,
"baseUrl": "src",
"emitDecoratorMetadata": true
},
"include": ["src/**/*.ts", "src"]
}
Dies ist meine tsconfig.json-Datei.
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;
Und dies ist der Teil, in dem ich absolute Importe verwendet habe.
Visual Studio Code zeigt hierfür keinen Fehler an, aber wenn ich die App ausführe, tritt der Fehler MODULE_NOT_FOUND auf.
Ich vermute, das liegt am fastify-autoload Plugin. Natürlich könnte ich stattdessen Import mit relativen Pfaden verwenden, aber das würde den Code unordentlich und schwer lesbar machen, also hoffe ich, dass ich einen Weg finden kann, das zu umgehen.
Wenn jemand Erfahrung damit hat, bitte helft mir.
Antwort #1
Ich habe eine alternative Lösung gefunden, tsc-alias zu verwenden. Hier ist meine tsconfig.json-Datei.
{
"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"]
}
