Windows系统TypeScript编译报错:tsc-watch命令Mac正常Windows异常
Windows下tsc-watch命令执行报错的解决方案
问题根源
Windows系统默认使用Cmd/PowerShell作为执行shell,你指定的./node_modules/.bin/tsc在Windows下对应bash脚本(.sh文件),Node执行该脚本时无法识别bash语法(比如$(...)命令替换),从而抛出语法错误。另外,Windows Cmd不支持用单引号包裹命令参数,这也会导致解析异常。
解决方案
方案1:省略编译器路径,利用npm自动解析(推荐)
npm会自动在node_modules/.bin目录中查找可执行文件,无需手动指定路径,同时将单引号替换为Windows支持的双引号:
npx tsc-watch --noClear --compiler tsc --onSuccess "node ./dist/src/index.js"
方案2:指定Windows专属的.cmd脚本路径
Windows下node_modules/.bin中的tsc对应.cmd后缀的脚本文件,直接指定该路径即可:
npx tsc-watch --noClear --compiler ./node_modules/.bin/tsc.cmd --onSuccess "node ./dist/src/index.js"
方案3:配置package.json脚本实现跨平台兼容
如果在package.json的scripts中配置,需要转义双引号(符合JSON语法要求),这样Mac和Windows系统都能正常执行:
{ "scripts": { "dev": "tsc-watch --noClear --compiler tsc --onSuccess \"node ./dist/src/index.js\"" } }
执行时直接运行npm run dev即可。
内容的提问来源于stack exchange,提问作者Adnan Ali
相关产品推荐
相关产品推荐

