我在尝试解决此问题时遇到了死胡同。我正在使用以下TypeScript配置:
{
"compilerOptions": {
"module": "es2022",
"moduleResolution": "nodenext",
"target": "es2017",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
"noImplicitAny": true,
"outDir": "./dist",
"rootDir": "./src",
"typeRoots": [
"./src/types", "./node_modules/@types"],
"allowJs": true,
"strictFunctionTypes": true,
"noImplicitReturns": true
},
"include": ["./src/**/*"],
"exclude": ["node_modules"],
"ts-node": {
"esm": true,
"experimentalSpecifierResolution": true
}
}
如您所见,moduleResolution设置为nodenext,因此我必须在导入时显式添加文件扩展名,如下所示:import ServerError from '../models/Errors/ServerError.js';
。否则,我会得到一个错误,即未找到该模块。
一切正常,但是当我启动测试时,我得到一个错误:Cannot find module '../models/Errors/ServerError.js' from '../src/services/usersService.ts'
。基本上,jest尝试查找文件ServerError.js,但该文件不存在,因为所有文件的扩展名都是.ts,所以应该是ServerError.ts。如果我尝试在文件中将.js更改为.ts,也会收到错误。
因为这个问题我不能完成我的任务,所以我将感谢任何帮助。
2条答案
按热度按时间soat7uwm1#
最后,在做了一些研究并更新了jest配置文件之后,我设法解决了这个问题。
有了这个配置,一切都很好。我希望它能对一些人有所帮助。
55ooxyrt2#
我通过在
jest.config.json
中添加一个配置moduleFileExtensions
设置来解决这个问题;