类型脚本路径在Express项目中不起作用

我正在尝试使用TypeScript的路径功能,这样我就不需要再使用相对导入了

这是我的tsconfig.json文件:

{
&“编译器选项”:{
&“目标”:“es5”;,
&“模块”:“commonjs”;,
&“严格”:正确,
&“esModuleInterop”:正确,
&“outDir”:“outDir/dist”;,
&“rootDir”:“rootDir”;,
&“模块解决方案”:“节点”;,
&“allowSyntheticDefaultImports”:true,
&“resolveJsonModule”:true,
&“baseUrl”:“baseUrl”;,
&“allowJs”:正确,
&“路径”:{
&*:[“node”modules/*,“src/*”,
&“@config/*”:[“src/config/*”],
&“@controllers/*”:[“src/controllers/*”,
&“@middleware/*”:[“src/middleware/*”,
&“@models/*”:[“src/models/*”,
&“@routes/*”:[“src/routes/*”,
&“@types/*”:[“src/types/*”,
&“@utils/*”:[“src/utils/*”]
}
},
&“包括”:[“src/****”,
&“排除”:[“节点”模块、“firebase config.json”和“webpack.config.js”]
}

这是我的package.json文件:

{
&“名称”:“express ts样板文件”;,
&“版本”:“0.1.0”;,
&“描述”:“Express Typescript样板文件”;,
&“main”:“src/server.js”;,
&“作者”:“Sriram R”;,
&“脚本”:{
&“开始”:“节点环境=生产节点区/src/app.js”;,
&“开发”:“nodemon src/app.ts”;,
&“建造”:“tsc-p”;,
&“测试”:“摩卡咖啡——出口——r ts节点/寄存器src/tests/*.spec.ts”;
},
&“依赖性”:{
//这里的依赖项
},
&“依赖性”:{
//这里的依赖项
},
}

所以现在在我的一个文件中,我尝试了@config/typeConfig,但是我得到了找不到模块的错误

可能是因为nodemon的缘故,但它也不能与ts节点一起工作。
我怎样才能让它工作

注意:对于使用nodemon的工作示例,请跳到我答案的第二部分

如果您的意思是一旦编译了文件并运行了应用程序,就找不到模块,那么看看这个线程:模块路径映射不会在发出的代码中解析

“路径”设计用于允许重新映射的加载程序

假设我在我的tsconfig.json中有此路径:

“路径”:{
“@config/*”:[“src/config/*”]
}

我需要一个在文件中使用该路径的文件

从'@config/test'导入测试;

查看编译后的文件,我最终得到

var test\u 1=\u\u importDefault(require(“@config/test”);

如您所见,路径尚未解析,仍然是@config/test。使用nodemonts node测试应用程序时也会发生同样的情况

此外,还需要使用Typescript路径别名解析程序,例如exampletspath

TypeScript编译器将能够解析路径,这样就可以毫无问题地编译,但是JavaScript输出将无法通过节点或Web浏览器执行,为什么?原因很简单

JavaScript引擎对编译时TypeScript配置一无所知

为了运行JavaScript代码,现在需要再次将路径别名设置为相对路径,这是TSPath发挥作用的时候


这就是说,如果您想让nodemon工作,下面的配置就可以了。事先,请确保安装了tsconfig路径

npm i tsconfig路径

使用此选项加载位置在tsconfig.json的路径部分中指定的模块。支持在运行时加载和通过API加载。
(...)
如果需要此包的tsconfig path/register模块,它将从tsconfig.json读取路径,并将节点的模块加载调用转换为节点可以加载的物理文件路径

很好,我们将使用-r tsconfig path/register执行节点,将路径转换为物理文件路径,-r ts node/register动态执行ts文件,nodemon将在更改后重新启动应用程序

在您的package.json中,您需要添加以下内容(根据需要修改):

“节点配置”:{
“忽略”:
[
“***.test.ts”,
“***规格ts”,
“.git”,
“节点_模块”
],
“手表”:[
“src”
],
“exec”:“node-r tsconfig path/register-r ts node/register./src/server.ts”,
“外部”:“ts,js”
},
“脚本”:{
“dev”:“nodemon”
}

请注意为节点节点添加的配置

最后

npm运行开发

事情应该进展顺利

发表评论