Windows10下执行npm run web遇Webdriverio语法错误求助
解决Windows10下webdriverio v4执行npm run web的语法错误问题
我之前也碰到过这个问题,核心原因是Windows默认的命令行环境(CMD/PowerShell)不支持Bash脚本语法,而你调用的node_modules/.bin/wdio是一个Bash脚本,里面的basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")属于Bash专属语法,CMD无法解析,所以抛出了SyntaxError: missing ) after argument list错误。
下面是几个可行的解决办法:
方法一:直接用Node.js运行wdio的JS入口文件
绕过Bash脚本,直接调用webdriverio的JavaScript执行文件,修改你的package.json中scripts字段:
"scripts": { "web": "node node_modules/webdriverio/bin/wdio.js ./test/config/suite.web.conf.js" }
修改后重新执行npm run web,Windows环境下Node.js可以直接解析这个JS文件,不会再出现Bash语法兼容问题。
方法二:使用支持Bash的终端执行命令
如果想保留原有的scripts配置,可以在支持Bash的终端中运行命令:
- 安装并打开Git Bash,在里面执行
npm run web - 启用Windows子系统Linux(WSL),切换到WSL环境后执行命令
这类终端能正确解析Bash脚本里的语法,自然就能正常运行了。
方法三:重新安装依赖确保完整性
有时候依赖安装不完整也会导致脚本异常,你可以尝试:
- 删除项目根目录下的
node_modules文件夹和package-lock.json文件 - 执行
npm install重新安装所有依赖 - 再次运行
npm run web
内容的提问来源于stack exchange,提问作者Afsar Ali
相关产品推荐
相关产品推荐

