首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ParseError:需要冒号(svelte with scss style) svelte单元测试

ParseError:需要冒号(svelte with scss style) svelte单元测试
EN

Stack Overflow用户
提问于 2021-11-24 05:25:03
回答 1查看 163关注 0票数 2

我正在尝试为使用SCSS作为默认样式的组件编写测试。但是测试抛出的错误是它不能理解SCSS

myComponent.svelte

代码语言:javascript
复制
<div>Hello <span>world</span></div>
<style>
div {
 padding: 20px;
 span {
  font-weight: bold;
 }
}
</style>

测试文件

代码语言:javascript
复制
// mycomponent.test.js
import { render } from '@testing-library/svelte';
import MyComponent from './MyComponent.svelte';
...
const { component } = render(MyComponent, {});
...

Jest配置

代码语言:javascript
复制
module.exports = {
  transform: {
    '^.+\\.js$': 'babel-jest',
    '^.+\\.svelte$': ['svelte-jester', { preprocess: true, debug: true }],
  },
  moduleFileExtensions: ['js', 'svelte'],
  roots: ['<rootDir>/app/modules'],
  modulePaths: ['<rootDir>/app/modules'],
  moduleDirectories: ['node_modules', 'app/modules'],
  setupFilesAfterEnv: [
    '<rootDir>/app/modules/tests/setupTest.js',
    '@testing-library/jest-dom/extend-expect',
  ],
  clearMocks: true, // Automatically clear mock calls and instances before every test.
};

我在svelte配置中将默认样式设置为SCSS

svelte.config.js

代码语言:javascript
复制
const preprocess = require('svelte-preprocess');

module.exports = {
  preprocess: preprocess({ defaults: { style: 'scss' } }),
};

错误堆栈

代码语言:javascript
复制
Colon is expected
4:     padding: 20px;
5: 
6:     span {
              ^
7:       font-weight: bold;
8:     }
ParseError: Colon is expected

      at error (node_modules/svelte/src/compiler/utils/error.ts:25:16)
      at Parser$1.error (node_modules/svelte/src/compiler/parse/index.ts:101:3)
      at Object.read_style [as read] (node_modules/svelte/src/compiler/parse/read/style.ts:31:11)
      at tag (node_modules/svelte/src/compiler/parse/state/tag.ts:189:27)
      at new Parser$1 (node_modules/svelte/src/compiler/parse/index.ts:53:12)
      at parse (node_modules/svelte/src/compiler/parse/index.ts:218:17)
      at Object.compile (node_modules/svelte/src/compiler/compile/index.ts:93:14)
      at compiler (node_modules/svelte-jester/dist/transformer.cjs:135:32)
      at Object.processSync [as process] (node_modules/svelte-jester/dist/transformer.cjs:111:12)
      at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:464:35)

要复制克隆并运行此存储库https://github.com/rparsh/svelte-testing-scss,请执行以下操作

EN

回答 1

Stack Overflow用户

发布于 2021-11-24 12:23:15

lang="scss"添加到<style>标记:

代码语言:javascript
复制
<style lang="scss">
</style>

一般来说,不再推荐使用默认语言,因为这样的问题。您不能确保生态系统中的所有工具都支持读取默认值。这也是为什么这个设置被从文档中删除,svelte-preprocess现在会打印一个警告,告诉你不应该再使用它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70091105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档