如何在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
相关产品推荐
相关产品推荐

