dcloudio / dcloudio/uni-app

同一个scss文件被多个在pages.json中声明的文件引入时不会写入到wxss中

Open
#4,567 1 comment 0 reactions 1 assignee Claimed by @chouchouji View on GitHub
Dominant language
JavaScript
Stars
41.6k
Forks
3.7k
Avg merge
7h 6m
Merged PRs (30d)
6

Description

**问题描述**
如果一个scss文件被多个vue文件同时通过`import './style.scss'`的方式引入,在构建后生成的wxss文件中无法找到`style.scss`中的内容。但是通过`@import url("./style.scss")`没问题

**复现步骤**
[复现问题的步骤]
1. 初始化
```bash
npx degit dcloudio/uni-preset-vue#vite-ts uniapp-vue3-ts
cd uniapp-vue-ts
pnpm i
```
2. 创建scss文件和index2.vue
```bash
cd src/pages/index
touch style.scss
echo ".test { color: crimson; }" >> style.scss

cp index.vue index2.vue
```

3. 在index.vue和index2.vue引入scss文件
```vue

import './style.scss'

```
4. 执行构建
```bash
pnpm dev:mp-weixin
```

**预期结果**
index.wxss中写入style.scss中的样式

**实际结果**
通过import引入的两个文件中的wxss中都没有对应的样式

**系统信息:**
- 发行平台: [微信小程序]
- 操作系统 [-]
- HBuilderX版本 [-]
- uni-app版本 [3.0.0-3081220230817001]
- 设备信息 [-]

**补充信息**
https://github.com/dcloudio/uni-app/blob/v3.0.0-3081220230817001/packages/uni-cli-shared/src/vite/plugins/vitejs/plugins/css.ts#L282-L283

目前只能定位到这里,当多个入口文件同时引用同一个样式文件`style.scss`时,生成的chunk里缺少这个样式文件,导致后面设置`cssChunks`时缺少这个文件,最终的表现就是`genCssCode`的结果里没有对应的样式内容。

-------------------------------

老项目从`3.0.0-alpha-3061120221205002`升级后出现小程序端样式丢失,检查过发现是多个文件同时引入了同一个样式文件,而生成后的wxss中并没有样式文件的内容。

由于是老项目,无法通过换用`@import`的方式解决,改造成本太大了。

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.