为什么我的自定义打字稿别名不起作用?

问题描述 投票:0回答:1

我正在创建一个

MERN Stack
大学项目,所以我在后端使用
typescript

tsconfig.json
中,我正在使用一些自定义别名进行文件导航。

我的

tsconfig.json

{
  "compilerOptions": {
    "target": "es2018",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "outDir": "dist",
    "paths": {
      "@controllers/*": ["./src/controllers/*"],
      "@models/*": ["./src/models/*"],
      "@routes/*": ["./src/routes/*"],
      "@customTypes/*": ["./src/customTypes/*"],
      "@databases/*": ["./src/databases/*"],
      "@functions/*": ["./src/functions/*"],
      "@middlewares/*": ["./src/middlewares/*"]
    }
  },
  "exclude": ["node_modules"]
}

但是在我启动开发服务器后出现此错误:

[INFO] 00:06:56 ts-node-dev ver. 2.0.0 (using ts-node ver. 10.9.1, typescript ver. 5.1.6)
Error: Cannot find module '@routes/login'
Require stack:
- D:\Projects\sd-college\server\src\index.ts
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)
    at Function.Module._load (node:internal/modules/cjs/loader:922:27)
    at Module.require (node:internal/modules/cjs/loader:1143:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at Object.<anonymous> (D:\Projects\sd-college\server\src\index.ts:4:1)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._compile (D:\Projects\sd-college\server\node_modules\source-map-support\source-map-support.js:568:25)
    at Module.m._compile (C:\Users\KANNUM~1\AppData\Local\Temp\ts-node-dev-hook-17848745239557018.js:69:33)
    at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at require.extensions..jsx.require.extensions..js (C:\Users\KANNUM~1\AppData\Local\Temp\ts-node-dev-hook-17848745239557018.js:114:20)
[ERROR] 00:06:57 Error: Cannot find module '@routes/login'
Require stack:
- D:\Projects\sd-college\server\src\index.ts

index.ts

import express, { Application, Request, Response } from "express";
import bodyParser from "body-parser";
import dotenv from "dotenv";
import { authStudentRoute } from "@routes/login";
dotenv.config();

const app: Application = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.get("/", (req: Request, res: Response) => {
  res.send("Build Folder Need To Be Served!");
});
app.use(authStudentRoute);

const PORT = process.env.PORT || 8000;

app.listen(PORT, () => {
  console.log(`Server is running on PORT ${PORT}`);
});

我只是尝试期望它应该被我的自定义别名的打字稿识别。

node.js typescript mern tsconfig
1个回答
0
投票

我看到您正在使用

ts-node
来启动服务器。根据ts-config网站,必须安装
tsconfig-paths
才能使用
paths
中的
tsconfig.json

安装

tsconfig-paths
作为开发依赖项:

npm install tsconfig-path --save-dev

ts-node
添加到
tsconfig.json

{
  "compilerOptions": {...},
  "exclude": [...],
  "ts-node": {
    "require": ["tsconfig-paths/register"]
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.