将 js 类导入 Svelte 组件的正确方法是什么?

加文

我有一个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章