You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vite构建中配置jsc.parser.usingDecl为true?

问题

使用Vite Plugin Web Extension构建跨浏览器扩展,采用TypeScript 5.3.2版本,代码中使用using关键字自动调用dispose方法,执行vite build时出现如下报错:

Using declaration is not enabled. Set jsc.parser.usingDecl to true (Note that you need plugins to import files that are not JavaScript)
file: C:/Users/xxxxx/source/repos/.../types.ts:73:14
71:
72:         //NOTE: learn more about 'using' keyword: https://www.typescriptlang.org/docs/handbook/release-notes/typescri...
73:         using awaiter = new RequestMonitor();

当前vite.config.ts内容如下:

import { defineConfig } from "vite";
import webExtension, { readJsonFile } from "vite-plugin-web-extension";

const target = process.env.TARGET || "chrome";

function generateManifest() {
  const manifest = readJsonFile(`src/manifest.${target}.json`);
  const pkg = readJsonFile("package.json");
  return {
    name: `${pkg.name} (${target})`,
    description: `${pkg.description} for ${target}`,
    version: pkg.version,
    ...manifest,
  };
}

export default defineConfig({
  define:{
    __BROWSER__: JSON.stringify(target)
  },
  publicDir: "assets",
  build: {
    outDir: "build"
  },
  plugins: [
    webExtension({
      manifest: generateManifest,
      watchFilePaths: ["package.json", "manifest.json"],
      browser: target,
    }),
  ],
});

请问如何将jsc.parser.usingDecl设置为true?

解决方法

这个报错来自SWC(vite-plugin-web-extension默认使用SWC处理代码),需要在Vite配置中添加SWC相关配置以开启using声明支持:

  • 首先确保安装了@swc/core(若未安装,执行命令:npm install @swc/core --save-dev)
  • 修改vite.config.ts,在webExtension的插件配置中添加swc选项,开启usingDecl:
import { defineConfig } from "vite";
import webExtension, { readJsonFile } from "vite-plugin-web-extension";

const target = process.env.TARGET || "chrome";

function generateManifest() {
  const manifest = readJsonFile(`src/manifest.${target}.json`);
  const pkg = readJsonFile("package.json");
  return {
    name: `${pkg.name} (${target})`,
    description: `${pkg.description} for ${target}`,
    version: pkg.version,
    ...manifest,
  };
}

export default defineConfig({
  define:{
    __BROWSER__: JSON.stringify(target)
  },
  publicDir: "assets",
  build: {
    outDir: "build"
  },
  plugins: [
    webExtension({
      manifest: generateManifest,
      watchFilePaths: ["package.json", "manifest.json"],
      browser: target,
      // 新增SWC配置,开启using声明支持
      swc: {
        jsc: {
          parser: {
            usingDecl: true,
            syntax: "typescript", // 确保TypeScript语法解析正常
          },
        },
      },
    }),
  ],
});
  • 重新执行vite build即可解决该报错。

内容的提问来源于stack exchange,提问作者JobaDiniz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 11:27:23