Parcel中为SCSS生成TypeScript类型声明解决ts(2307)报错方法咨询
首先移除你之前在package.json中新增的source、module、types相关配置:该配置仅适用于构建可发布的TS类库场景,你的项目入口是HTML文件,配置该字段会导致Parcel构建流程匹配错误,就是你后续遇到的transformer不存在、输出类型不匹配等报错的直接原因。
同时卸载无用依赖:你之前安装的@types/scss-parser和当前问题无关,可直接移除。
解决*.module.scss类型识别报错有两个可选方案:
方案1:无需新增额外文件,仅安装依赖
直接安装CSS模块的官方类型声明包即可,执行命令:npm i @types/css-modules --save-dev
安装完成后TS会自动识别.module.scss文件的类型,不需要额外新增配置或声明文件。
方案2:手动添加轻量声明文件
如果不想安装额外依赖,可在src目录下新建declarations.d.ts文件,写入以下内容:
declare module '*.module.scss' { const classes: Record<string, string> export default classes }
如果项目已存在tsconfig.json,确保其include配置包含该声明文件即可,没有tsconfig.json也可以直接生效。
Parcel本身确实支持无tsconfig.json运行,但TS对非JS/TS模块的识别本身依赖类型声明,上述两个方案都是轻量操作,不需要额外复杂配置。
内容的提问来源于stack exchange,提问作者strumpy_strudel
相关产品推荐
相关产品推荐

