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"]
}