WebdriverIO无法启动Chrome浏览器,遇ts-node/esm模块加载错误求助
WebdriverIO启动Chrome失败,出现ts-node钩子链错误
我是WebdriverIO新手,跟着YouTube教程搭建项目并编写了启动Chrome的简单代码,但Chrome始终无法启动,尝试多种配置方法仍未解决。执行npx wdio run .\wdio.conf.js命令后,日志显示ChromeDriver已成功启动,但抛出"ts-node/esm/transpile-only 'resolve'" did not call the next hook in its chain错误,测试执行失败。
命令执行日志
PS C:\Users\User\OneDrive\Documents\Webdriver-io-examples> npx wdio run .\wdio.conf.js Execution of 1 workers started at 2023-04-06T21:06:17.713Z 2023-04-06T21:06:17.867Z INFO chromedriver: Initiate Chromedriver Launcher (v8.1.1) 2023-04-06T21:06:17.869Z INFO @wdio/cli:launcher: Run onPrepare hook 2023-04-06T21:06:17.877Z INFO chromedriver: Start Chromedriver (C:\Users\User\OneDrive\Documents\Webdriver-io-examples\node_modules\chromedriver\lib\chromedriver\chromedriver.exe) with args --port=9515 --url-base=/ 2023-04-06T21:06:25.576Z INFO chromedriver: Starting ChromeDriver 112.0.5615.49 (bd2a7bcb881c11e8cfe3078709382934e3916914-refs/branch-heads/5615@{#936}) on port 9515 2023-04-06T21:06:25.577Z INFO chromedriver: Only local connections are allowed. 2023-04-06T21:06:25.578Z INFO chromedriver: Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. 2023-04-06T21:06:25.597Z INFO chromedriver: ChromeDriver was started successfully. 2023-04-06T21:06:25.638Z INFO @wdio/cli:launcher: Run onWorkerStart hook 2023-04-06T21:06:25.642Z INFO @wdio/local-runner: Start worker 0-0 with arg: run,.\wdio.conf.js [0-0] Error: "ts-node/esm/transpile-only 'resolve'" did not call the next hook in its chain and did not explicitly signal a shor[0-0] at new NodeError (node:internal/errors:399:5) [0-0] at ESMLoader.resolve (node:internal/modules/esm/loader:846:13) [0-0] at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:7) [0-0] FAILED 2023-04-06T21:06:26.287Z INFO @wdio/cli:launcher: Run onWorkerEnd hook 2023-04-06T21:06:26.288Z INFO @wdio/cli:launcher: Run onComplete hook Spec Files: 0 passed, 1 failed, 1 total (100% completed) in 00:00:08 2023-04-06T21:06:26.294Z INFO @wdio/local-runner: Shutting down spawned worker 2023-04-06T21:06:26.547Z INFO @wdio/local-runner: Waiting for 0 to shut down gracefully 2023-04-06T21:06:26.549Z INFO @wdio/local-runner: shutting down
项目结构

package.json配置
{ "name": "webdriver-io-examples", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "wdio": "wdio run ./wdio.conf.js" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "@wdio/cli": "^8.7.0", "@wdio/local-runner": "^8.7.0", "@wdio/mocha-framework": "^8.7.0", "@wdio/spec-reporter": "^8.7.0", "chromedriver": "^112.0.0", "wdio-chromedriver-service": "^8.1.1" } }
解决方法
这个错误根源是项目缺少TypeScript相关依赖,或者ES模块钩子配置异常,按以下步骤排查修复:
补全TypeScript相关依赖
你的package.json里未安装TypeScript和ts-node,先执行:npm install -D typescript ts-node @types/node @types/mocha修正wdio.conf.js的编译配置
打开wdio.conf.js,找到autoCompileOpts部分(如果没有则添加),确保配置如下:autoCompileOpts: { autoCompile: true, tsNodeOpts: { project: './tsconfig.json', transpileOnly: true } }添加tsconfig.json配置文件
在项目根目录新建tsconfig.json,复制以下内容:{ "compilerOptions": { "module": "commonjs", "target": "ES2020", "esModuleInterop": true, "skipLibCheck": true, "outDir": "./dist" }, "include": ["./test/**/*.ts"] }检查测试文件格式
确认测试脚本是.ts后缀;如果是.js文件,要么改成.ts,要么在tsconfig.json的include数组中加入"./test/**/*.js"。重置依赖缓存
若以上操作后仍报错,清理旧依赖重新安装:rm -rf node_modules package-lock.json npm install
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

