TypeScript自动化项目在服务器Jenkins执行时报错求助
解决WebdriverIO TypeScript项目在Ubuntu Jenkins中报错"Cannot use import statement outside a module"
问题根源
Ubuntu Jenkins环境中,Node.js默认将.ts配置文件当作CommonJS模块加载,但你的wdio.conf.regression.ts使用了ES模块的import语法,导致解析失败。本地Windows环境正常可能是因为Node版本、项目配置或依赖环境的差异。
解决方案
在package.json中声明ES模块类型
在项目根目录的package.json中添加以下配置,告诉Node.js整个项目采用ES模块规范:{ "type": "module" }调整tsconfig.json的模块配置
修改tsconfig.json中的module和moduleResolution字段,确保TypeScript编译输出符合ES模块要求:{ "compilerOptions": { "module": "ESNext", "moduleResolution": "node", // 保留其他原有配置 } }用ts-node的ES模块模式启动WebdriverIO
替换Jenkins中的启动命令,使用ts-node-esm加载ES模块格式的配置文件:npx ts-node-esm ./node_modules/@wdio/cli/bin/wdio.js wdio.conf.regression.ts对齐本地与服务器的Node.js版本
检查本地Windows和Ubuntu Jenkins的Node.js版本,确保两者一致(建议使用Node.js 16及以上版本,对ES模块支持更完善)。可通过node -v查看版本,使用nvm管理不同版本的Node.js。清理Jenkins工作区依赖缓存
在Jenkins构建步骤中先清理旧依赖,再重新安装:rm -rf node_modules package-lock.json npm ci
内容的提问来源于stack exchange,提问作者Гарник Геворгян
相关产品推荐
相关产品推荐

