我有一个SomeClass.ts
赞:
class SomeClass {
constructor () {
console.log('created someclass')
}
}
export default SomeClass
编译为SomeClass.js
'use strict'
exports.__esModule = true
const SomeClass = /** @class */ (function () {
function SomeClass () {
console.log('created someclass')
}
return SomeClass
}())
exports.default = SomeClass
并被导入到类似的脚本标签中App.svelte
:
<script>
import SomeClass from "./SomeClass";
const instance = new SomeClass();
</script>
但是在运行应用程序时出现错误:
Uncaught SyntaxError: import not found: default
在生成的行上:import SomeClass from "/src/SomeClass.js?t=1655451078055";
笔记:
只需在 SomeClass.js 中使用常规 ES6 风格类 & 就可以正常export default MyClass
工作,但还不如删除 Typescript ...
安装了 svelte-preprocess
npm install -D svelte-preprocess
更新vite.config.js
如下:
import { defineConfig } from 'vite'
import { svelte } from '@sveltejs/vite-plugin-svelte'
import sveltePreprocess from 'svelte-preprocess' // <--- added this
// https://vitejs.dev/config/
export default defineConfig({
plugins: [svelte({
preprocess: sveltePreprocess() // <--- added this
})]
})
删除了编译后的 .js,现在直接使用 Typescript 文件没问题!
该类是使用与 Svelte(ES 模块)所期望的不同的模块系统(CommonJS)编译的。
我不建议单独编译该类,而是通过使用标签svelte-preprocess
直接在组件中使用和导入/使用 TypeScript 源。<script lang="ts">
然后该类应与组件代码一起编译。
如果该类未在其他任何地方使用,您也可以将module
选项更改"esnext"
为相应的tsconfig.json
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句