我正在创建一个
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}`);
});
我只是尝试期望它应该被我的自定义别名的打字稿识别。
我看到您正在使用
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"]
}
}