与这个问题非常相似,但是不是在使用
node
时重复恕我直言:
$ tree .
.
├── src
│ ├── main.ts
│ └── utils
│ └── myUtils.ts
└── tsconfig.json
我正在尝试使用
@
导入,如下所示:
$ cat src/main.ts
import { myLovelyUtilsFunction } from "@folder1/myUtils"
const y = myLovelyUtilsFunction();
console.log(`>>> ${y}`);
我的
tsconfig.json
看起来正确,将 @folder1
映射到它应该的位置:
{
"compilerOptions": {
"baseUrl": "src",
"paths": { "@folder1/*": ["utils/*"] },
"module": "commonjs"
}
}
转译进行很好,但运行
node
不:
$ npx tsc -p tsconfig.json # <--- no errors
$ node src/main.js
node:internal/modules/cjs/loader:1078
throw err;
^
Error: Cannot find module '@folder1/myUtils'
Require stack:
< ... omitted ... >
我认为您需要
tsconfig-paths
或 ts-node
才能使模块分辨率正常工作。
修改您的
tsconfig.json
{
"compilerOptions": {
"baseUrl": "./",
"paths": { "@folder1/*": ["src/utils/*"] },
"module": "commonjs"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
您还需要创建一个入口文件点,它将使用 tsconfig-paths 来解析路径。
index.ts
import 'tsconfig-paths/register';
import './src/main';
更新您的
package.json
,然后运行进行测试。
{
"scripts": {
"start": "node index.js"
}
}
您的项目结构现在可能如下所示
.
├── src/
│ ├── main.ts
│ ├── utils/
│ │ └── myUtils.ts
├── tsconfig.json
├── package.json
├── index.ts