使用Atom-typescript 12.0编译TypeScript触发Emit Failed报错求助
解决Atom中atom-typescript 12.0编译时的
Emit Failed错误 问题分析
你遇到的Unrecognized JSON command: compileOnSaveEmitFile错误,本质是atom-typescript 12.0插件与项目中使用的TypeScript版本不兼容导致的。compileOnSaveEmitFile是插件向TS语言服务发送的命令,但你的TS版本不识别这个指令;而你注释掉该命令后,插件后续逻辑因找不到预期的返回结果,又触发了Cannot read property 'body' of undefined的连锁错误。
解决方案
方案1:关闭自动保存编译(快速临时修复)
- 先恢复你之前注释的代码:打开
/Users/Elia/.atom/packages/atom-typescript/dist/client/client.js,把// "compileOnSaveEmitFile",恢复成"compileOnSaveEmitFile",,保存文件。 - 修改你的
tsconfig.json,将"compileOnSave": true改为false:{ "compilerOptions": { "allowJs": true, "module": "commonjs", "target": "es6", "sourceMap": true, "outDir": "../com", "compileOnSave": false }, "exclude": [ "node_modules" ] } - 重启Atom,之后可以通过Atom的命令面板(
Cmd+Shift+P)执行TypeScript: Build命令手动触发编译,这样既能避免自动编译的报错,又能正常完成编译。
方案2:匹配插件与TypeScript版本(彻底解决)
atom-typescript 12.0对TypeScript的版本有特定要求,你需要确认项目中安装的TS版本是否在插件支持范围内:
- atom-typescript 12.0通常对应TypeScript 2.x系列版本(比如2.8~2.9区间)。
- 如果你的项目使用的是更高版本的TS(比如3.x及以上),请降级项目中的TypeScript到兼容版本:
npm install typescript@2.9.2 --save-dev - 或者,升级atom-typescript插件到最新兼容版本(注意:高版本插件可能不再支持旧版Atom,需提前确认Atom版本兼容性):
在Atom的设置中找到atom-typescript插件,点击更新;或者通过命令行执行:apm update atom-typescript
方案3:排查插件冲突
检查Atom中是否安装了其他TypeScript相关插件(比如typescript-compile等),这些插件可能与atom-typescript产生冲突。暂时禁用其他TS插件,重启Atom后再尝试编译,看是否解决问题。
内容的提问来源于stack exchange,提问作者Elia Weiss
相关产品推荐
相关产品推荐

