Cypress TypeScript项目模块无法识别,请求技术帮助
解决"File '../path/module' is not a module"报错方案
1. 对齐导出与导入的模块规范
你同时用了CommonJS的module.exports导出,又把tsconfig的module设为ES2015(ES模块),两者规则不兼容,必须二选一:
- 转用ES模块:把模块文件里的
module.exports改成ES语法,比如export default class LoginPage {},导入时用import LoginPage from '../pages/login-page'; - 保留CommonJS:将tsconfig里的
module值改为CommonJS,导入时用const LoginPage = require('../pages/login-page')。
2. 修正tsconfig的关键配置
检查tsconfig.json里的这几个配置项:
moduleResolution:设置为NodeNext或Node16,让TypeScript自动适配模块解析逻辑;allowJs:如果你的模块是JS文件,设为true,允许TS识别并导入JS模块;rootDir和outDir:确认源码目录和编译输出目录配置正确,避免路径解析混乱。
3. 无index.html项目的特殊处理
如果你的项目是纯Node/自动化测试类项目(比如Playwright、Cypress实现页面对象模式),不需要index.html,那修改script type的提示完全不适用你,重点做这几件事:
- 检查导入路径的扩展名:TS文件导入可省略
.ts,但JS文件导入最好加上.js; - 重启VSCode的TypeScript服务:按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac),输入TypeScript: Restart TS Server,清除缓存; - 检查package.json:如果用CommonJS,确保
package.json里没有"type": "module";如果用ES模块,加上这个字段,它会影响Node的模块解析规则。
内容的提问来源于stack exchange,提问作者knalepa
相关产品推荐
相关产品推荐

