javascript - Svelte 仅支持 es6+ 语法。将您的 'compilerOptions.target' 设置为 'es6' 或更高

标签 javascript typescript svelte rollup transpiler

我一直在使用 Svelte、TypeScript 和 Rollup(让 TypeScript 处理转译)来定位 ES7。现在我正在开始一个新项目,需要以 ES5 为目标。
我注意到的第一件事是一切都被转译了,但组件仍然是类。那时我的组件中没有任何脚本。将脚本标签添加到 .svelte 文件后,我立即收到错误消息:

Svelte only supports es6+ syntax. Set your 'compilerOptions.target' to 'es6' or higher


我知道我需要将 TS 目标设置为 ES6/ES7 并安装 Rollup Babel 插件来处理转译为 ES5。但是为什么普通的 TypeScript 转换不起作用呢?为什么 Svelte 关心 TypeScript 目标?您会认为 Svelte 文件在转译为 ES5 之前会先转换为 TS,但似乎反过来呢?

最佳答案

Svelte 编译器在 JS 上运行,任何其他语言都是 pre-processed转换成 JS,否则 Svelte 编译器将不得不处理许多不同的语言。另外,你不能把 JS 变成 TS,TS 比 JS 有更多的信息,没有办法取回这些信息。
如果你的最终结果应该是 ES5,你可能需要一个多步骤的 pileline:

TS => JS 6+ =Svelte=> JS 6+ => JS 5

关于javascript - Svelte 仅支持 es6+ 语法。将您的 'compilerOptions.target' 设置为 'es6' 或更高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72168054/

相关文章:

javascript - Requirejs + Backbone 未捕获类型错误 : Cannot read property 'Model' of undefined

typescript - 开发人员如何将JavaScript文件转换为TypeScript?

zeit/now 上的 svelte/sapper 直接链接问题 - 如何调试或修复?

javascript - 每个转换而不是每个组件定义的 Svelte 转换

JavaScript 对对象的引用

javascript - react 状态无故更新

javascript - 增加 MatBottomSheet 的宽度?

reactjs - material-ui 对话框内的表单未在 Enter 上提交

javascript - Visual Studio Asp.net core Angular 模板在构建时自动运行测试

javascript - SvelteKit - "ReferenceError: File is not defined"