Nodejs tsconfig 配置 paths 后运行提示找不到模块是什么意思啊?
Nodejs tsconfig 配置 paths 后运行提示找不到模块是什么意思啊?
tsconfig.json
...
"baseUrl": ".",
"paths": {
"[@share](/user/share)/*": [
"../share/*"
]
}
...
jsconfig.json
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"[@share](/user/share)/*": [
"../share/*"
]
},
"target": "ES6",
"module": "commonjs",
"allowSyntheticDefaultImports": true
},
"include": [
"**/*.ts"
],
"exclude": [
"node_modules"
]
}
在 index.ts 配置require('module-alias/register');
这时候运行,导入import { Rst } from '[@share](/user/share)/core/vo';
的地方就会报错,提示找不到模块,是不是 module-alias 必须要分开声明啊?不能用星号全部声明?
需要引入 react-rewrite 这个,改写一下 start 部分的脚本,让其通过 rewrite 启动
这个是要改 webpack 的配置,光设置 path 只告诉了 vscode 去哪里找,没告诉编译器去哪里找
我没用 webpack 啊,node 项目,我永的 module-alias 貌似不行
本地开发的话一般不需要使用 module-alias,tsconfig.json 中的 paths 就可以了,但要让打包后项目中模块路径查找正常的话就需要加入 module-alias,最好在入口文件判断环境变量来觉得使用使用 module-alias,比如:js<br>// addAlias.ts<br>import moduleAlias from 'module-alias'<br>import path from 'path'<br><br>export default () => {<br> moduleAlias.addAliases({<br> '@share': path.join(__dirname, 'src/share')<br> })<br>}<br><br>
js<br>// app.ts<br>import addAlias from './addAlias'<br><br>if (process.env.NODE_ENV !== 'development') {<br> addAlias()<br>}<br>
在 Node.js 项目中使用 TypeScript 时,配置 tsconfig.json
中的 paths
选项可以帮助你设置模块解析路径的别名,这在大型项目中非常有用,因为它可以简化模块间的引用。然而,配置后运行时提示找不到模块,通常是因为 Node.js 本身不支持 TypeScript 的路径别名解析。
要解决这个问题,你需要使用一个工具来拦截 Node.js 的模块加载过程,并将路径别名转换为实际的文件路径。一个常用的工具是 ts-node
配合 tsconfig-paths
模块。
下面是一个基本的示例,展示如何在 Node.js 环境中使用这些工具来支持 TypeScript 的路径别名:
- 安装必要的依赖:
npm install --save-dev ts-node tsconfig-paths typescript
- 在你的启动脚本(如
index.ts
)中,添加以下代码来配置路径别名解析:
import 'tsconfig-paths/register';
// 你的其他代码
import something from '@/path/to/module';
- 确保你的
tsconfig.json
中正确配置了paths
和baseUrl
:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
}
}
- 使用
ts-node
来运行你的 TypeScript 文件:
npx ts-node index.ts
这样配置后,ts-node
会通过 tsconfig-paths
解析路径别名,从而避免找不到模块的错误。