You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已安装ts-node仍报错:WebdriverIO/Electron项目模块找不到

配置Electron+WebdriverIO时出现ERR_MODULE_NOT_FOUND错误

运行自动化测试时遇到以下模块找不到错误:

node:internal/errors:465
    ErrorCaptureStackTrace(err);
    ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\user\automation\product\src\product.client\
node_modules\ts-node\esm\transpile-only' imported from C:\Users\user\automation\product\src\product.client\
    at new NodeError (node:internal/errors:372:5)
    at finalizeResolution (node:internal/modules/esm/resolve:437:11)
    at moduleResolve (node:internal/modules/esm/resolve:1009:10)
    at defaultResolve (node:internal/modules/esm/resolve:1218:11)
    at ESMLoader.resolve (node:internal/modules/esm/loader:580:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:294:18)
    at ESMLoader.import (node:internal/modules/esm/loader:380:22)
    at initializeLoader (node:internal/process/esm_loader:74:49)
    at loadESM (node:internal/process/esm_loader:87:11)
    at runMainESM (node:internal/modules/run_main:51:21) {
  code: 'ERR_MODULE_NOT_FOUND'
}

已确认ts-node已安装,项目package.json配置如下:

{
    "devDependencies": {
        "@types/chalk": "^2.2.0",
        "@types/chart.js": "^2.9.34",
        "@types/command-line-args": "^5.0.0",
        "@types/execa": "^2.0.0",
        "@types/node": "^14.6.0",
        "@types/request": "^2.48.7",
        "@typescript-eslint/eslint-plugin": "^2.18.0",
        "@typescript-eslint/parser": "^2.18.0",
        "@wdio/cli": "^8.3.3",
        "@wdio/devtools-service": "^7.16.14",
        "chalk": "^4.1.0",
        "command-line-args": "^5.1.1",
        "cross-env": "^7.0.2",
        "electron-chromedriver": "^13.0.0",
        "electron-packager": "^15.2.0",
        "electron-wix-msi": "^3.2.0",
        "eslint": "^6.8.0",
        "eslint-plugin-import": "^2.20.0",
        "execa": "^4.0.3",
        "rimraf": "^3.0.2",
        "ts-node": "^8.10.2",
        "typescript": "^4.9.5",
        "wdio-electron-service": "^3.5.1",
        "webdriverio": "^7.7.4",
        "yarn-run-all": "^3.1.1"
    },
    "dependencies": {
        "chart.js": "2.9.4",
        "electron": "^23.0.0",
        "react-number-format": "^4.8.0"
    }
}

错误原因分析

  1. ts-node版本过低:你安装的ts-node@8.10.2是2020年的旧版本,当时ESM支持还不完善,transpile-only的ESM入口路径可能不存在或与当前Node.js的ESM加载逻辑不兼容。
  2. WebdriverIO版本冲突:项目混合使用了v8版的@wdio/cli和v7版的webdriverio,跨版本搭配会导致加载逻辑混乱。
  3. ESM配置缺失:如果项目启用了ESM模式(package.json含"type": "module"),ts-node需要额外配置才能正确处理ESM模块。
  4. Node.js版本不匹配:@types/node@14.6.0对应Node.js 14,但Electron v23基于Node.js 18,版本差异可能引发兼容性问题。

解决步骤

1. 升级ts-node到兼容版本

卸载旧版本,安装最新稳定版:

npm uninstall ts-node
npm install -D ts-node@latest

或使用yarn:

yarn remove ts-node
yarn add -D ts-node@latest

2. 统一WebdriverIO版本

WebdriverIO的CLI与核心库版本必须一致,建议升级到v8稳定版:

npm uninstall @wdio/cli webdriverio @wdio/devtools-service wdio-electron-service
npm install -D @wdio/cli@latest webdriverio@latest @wdio/devtools-service@latest wdio-electron-service@latest

若需保留v7版本,执行:

npm uninstall @wdio/cli
npm install -D @wdio/cli@7.7.4

3. 配置ESM支持(若项目为ESM模式)

在tsconfig.json中添加ts-node的ESM配置:

{
  "ts-node": {
    "esm": true,
    "experimentalSpecifierResolution": "node"
  },
  "compilerOptions": {
    "module": "ESNext",
    "moduleResolution": "NodeNext",
    "target": "ES2020",
    "esModuleInterop": true
  }
}

同时确保WDIO配置文件(如wdio.conf.ts)使用ESM导出规范,用export default替代module.exports。

4. 清理依赖缓存并重装

缓存异常可能导致依赖加载问题,执行以下命令:

# npm环境
npm cache clean --force
rm -rf node_modules package-lock.json
npm install

# yarn环境
yarn cache clean
rm -rf node_modules yarn.lock
yarn install

5. 升级Node.js版本

将Node.js升级到16+版本(Electron v23兼容16+),匹配Electron的底层Node.js版本,避免兼容性问题。


内容的提问来源于stack exchange,提问作者kev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:42:51