node.js - Impor absolut tidak berfungsi dengan fastify-autoload


Saya sedang membangun aplikasi Fastify dengan TypeScript dan saya mengalami masalah dengan penggunaan impor absolut.

{
  "extends": "fastify-tsconfig",
  "compilerOptions": {
    "outDir": "dist",
    "sourceMap": true,
    "experimentalDecorators": true,
    "strictPropertyInitialization": false,
    "baseUrl": "src",
    "emitDecoratorMetadata": true
  },
  "include": ["src/**/*.ts", "src"]
}

Ini adalah file tsconfig.json saya.

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;

Dan ini adalah bagian di mana saya menggunakan import absolut.

Visual Studio Code tidak menampilkan kesalahan dengan ini, tetapi ketika saya menjalankan aplikasi, terjadi kesalahan MODULE_NOT_FOUND.

Saya kira ini karena plugin fastify-autoload. Tentu saja, saya bisa menggunakan import dengan path relatif, tetapi itu akan membuat kode berantakan dan sulit dibaca, jadi saya berharap bisa mengatasi ini.

Jika ada yang memiliki pengalaman dengan ini, tolong bantu saya.

Jawaban #1

Saya menemukan solusi alternatif dengan menggunakan tsc-alias. Ini adalah file tsconfig.json saya.

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