svelte:无法识别导入的打字稿文件

所以...

我正在尝试使用 Rollup 构建一个带有 Svelte 和 Typescript 的应用程序,当我尝试构建我的 Svelte 组件时,我似乎无法让它编译.ts包含在.svelte组件中的我的文件。

我不断收到此错误:

[!] Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
src/ui/pages/files-page/utils/mapPaths.ts (1:12)
1: import type { PathMapping } from '~/types/path.d';
               ^
[!] Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
src/ui/pages/files-page/utils/mapPaths.ts (1:12)
1: import type { PathMapping } from '~/types/path.d';
               ^

这是我的FilesPage.svelte,包括mapPaths.ts文件:

和我的mapPaths.ts文件:

import type { PathMapping } from '~/types/path.d';

export default (paths: string[]): PathMapping => {
  const mapping = paths.reduce(
    (m, path) => {
      const root = path.replace(/_d+$/, '');
      m.set(root, (m.get(root) || 0) + 1);
      return m;
    },
    new Map() as Map<string, number>
  );

  return Array.from(mapping.entries());
};
import type { PathMapping } from '~/types/path.d';

export default (paths: string[]): PathMapping => {
  const mapping = paths.reduce(
    (m, path) => {
      const root = path.replace(/_d+$/, '');
      m.set(root, (m.get(root) || 0) + 1);
      return m;
    },
    new Map() as Map<string, number>
  );

  return Array.from(mapping.entries());
};

这是我的rollup.config.js

<script lang="ts">
  import FileList from '~/ui/layouts/file-list/FileList.svelte';

  import mapPaths from './utils/mapPaths';

  export let paths: string[] = [];

  $: mappedPaths = mapPaths(paths);
</script>

<FileList paths={mappedPaths} />

并且很好地衡量我的tsconfig.json

我一直在玩插件的顺序,但无济于事。据我所知,它们应该按照推荐的顺序排列(可能除外alias)。

非常感谢任何帮助,因为我对拒绝工作的构建有点疯狂。

回答

我遇到了同样的问题。这似乎是一个复杂的错误,但这是为我解决的问题。汇总 github 中的这条评论说:

现在的快速修复是手动将您的 rootDir 编译器选项设置为“src”。

因此,我将此标志添加到 rollup.config.js 中 typescript 插件中的 ts 编译器选项(当然,我的源目录也称为 src,您可以更改它以适合您的目录结构):

plugins: [
    ...
    typescript({
      ...
      rootDir: './src',
    }),
    ...
  ],

不幸的是,我不能保证它也适用于你,因为它是一个快速修复。如果更新也是一种选择,该问题似乎在较新版本的打字稿中得到解决。


以上是svelte:无法识别导入的打字稿文件的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>