【问题标题】:svelte-preprocess does not transform typescript into javascriptsvelte-preprocess 不会将 typescript 转换为 javascript
【发布时间】:2022-02-25 05:54:41
【问题描述】:

我正在尝试在 Web Worker 中解析纤细的组件源代码。 完整源码here

import { parse , preprocess } from 'svelte/compiler';
import sveltePreprocess from 'svelte-preprocess';

import {
  typescript,
  scss,
  globalStyle,
} from 'svelte-preprocess';


async function parseSvelte(source : string) {
  
  const preprocessedResult = await preprocess( source, [
    typescript({}),
    scss(),
    globalStyle(),
  ]);
  console.log(preprocessedResult);

  try {
  const ast = parse(preprocessedResult.code);
  console.log(ast);
  }
  catch(e) { console.log(e.toString() )}
}

我正在使用上面的代码来解析以下 svelte 组件

<script lang="ts">
const x = (y : string) => {};
</script>

preprocess 应该将 typescript 转换为 javascript,对吧? 但是preprocessedResult.code仍然包含typescript,后面的parse失败了。

Unexpected token (3:25)
1: 
2:           <script lang="ts">
3:             const x = (y : string) => {};
                            ^
4:             </script>

调用preprocess方法没有报错,请问这是什么问题?

【问题讨论】:

    标签: svelte svelte-3 svelte-preprocess


    【解决方案1】:

    svelte-preprocess/src/transformers/typescript.ts 第 497 行中的问题
    if (filename == null) return { code: content };

    当您调用没有“可选”文件名的 svelte.preprocess 时,打字稿预处理器什么也不做。

    使用第三个参数调用预处理来解决问题:

    svelte.preprocess(code, processors, { filename: '/path/to/Component.svelte' })
                                          ^^^^^^^^
    

    (它甚至不必是有效的文件名)

    我已经报告了这个错误https://github.com/sveltejs/svelte-preprocess/issues/488

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-18
      • 2023-02-05
      • 2021-05-04
      • 2013-04-18
      • 1970-01-01
      • 2021-07-20
      • 2019-09-17
      • 2018-05-26
      相关资源
      最近更新 更多