#svelte
Вопрос:
Я пытаюсь написать тест для компонента, который использует SCSS в качестве стиля по умолчанию. Но тест выдает ошибку, из-за которой он не может понять SCSS
миКомпонент.стройная
<div>Hello <span>world</span></div>
<style>
div {
padding: 20px;
span {
font-weight: bold;
}
}
</style>
Тестовый файл
// mycomponent.test.js
import { render } from '@testing-library/svelte';
import MyComponent from './MyComponent.svelte';
...
const { component } = render(MyComponent, {});
...
Jest Config
module.exports = {
transform: {
'^. \.js
Я устанавливаю стиль по умолчанию SCSS
в конфигурации svelte
svelte.config.js
const preprocess = require('svelte-preprocess');
module.exports = {
preprocess: preprocess({ defaults: { style: 'scss' } }),
};
Стек ошибок
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
Комментарии:
1. Находится
svelte.config.js
ли файл в корневом каталоге вашего проекта?2. да, он расположен в корне, где находится конфигурация jest @Phil
3. Глядя на документы предварительной подготовки svelte , я на самом деле не вижу
defaults
возможности. Вы уверены, что ваш конфигурационный файл правильный?4. @Phil да поддерживается, я могу скомпилировать сборку. Похоже, они удалили его из документов несколько месяцев назад github.com/sveltejs/svelte-preprocess/commit/...
Ответ №1:
Добавить lang="scss"
в <style>
тег:
<style lang="scss">
</style>
В общем, больше не рекомендуется использовать языки по умолчанию из-за подобных проблем. Вы не можете быть уверены, что все инструменты в экосистеме поддерживают чтение значений по умолчанию. Именно поэтому этот параметр был удален из документов и svelte-preprocess
теперь выводит предупреждение о том, что вы больше не должны его использовать.
: 'babel-jest',
'^. \.svelteЯ устанавливаю стиль по умолчанию SCSS
в конфигурации svelte
svelte.config.js
Стек ошибок
Чтобы воспроизвести клонирование и запустить это репо
https://github.com/rparsh/svelte-testing-scss
Комментарии:
1. Находится
svelte.config.js
ли файл в корневом каталоге вашего проекта?2. да, он расположен в корне, где находится конфигурация jest @Phil
3. Глядя на документы предварительной подготовки svelte , я на самом деле не вижу
defaults
возможности. Вы уверены, что ваш конфигурационный файл правильный?4. @Phil да поддерживается, я могу скомпилировать сборку. Похоже, они удалили его из документов несколько месяцев назад github.com/sveltejs/svelte-preprocess/commit/...
Ответ №1:
Добавить lang="scss"
в <style>
тег:
В общем, больше не рекомендуется использовать языки по умолчанию из-за подобных проблем. Вы не можете быть уверены, что все инструменты в экосистеме поддерживают чтение значений по умолчанию. Именно поэтому этот параметр был удален из документов и svelte-preprocess
теперь выводит предупреждение о том, что вы больше не должны его использовать.
: ['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.
};
Я устанавливаю стиль по умолчанию SCSS
в конфигурации svelte
svelte.config.js
Стек ошибок
Чтобы воспроизвести клонирование и запустить это репо
https://github.com/rparsh/svelte-testing-scss
Комментарии:
1. Находится
svelte.config.js
ли файл в корневом каталоге вашего проекта?2. да, он расположен в корне, где находится конфигурация jest @Phil
3. Глядя на документы предварительной подготовки svelte , я на самом деле не вижу
defaults
возможности. Вы уверены, что ваш конфигурационный файл правильный?4. @Phil да поддерживается, я могу скомпилировать сборку. Похоже, они удалили его из документов несколько месяцев назад github.com/sveltejs/svelte-preprocess/commit/…
Ответ №1:
Добавить lang="scss"
в <style>
тег:
В общем, больше не рекомендуется использовать языки по умолчанию из-за подобных проблем. Вы не можете быть уверены, что все инструменты в экосистеме поддерживают чтение значений по умолчанию. Именно поэтому этот параметр был удален из документов и svelte-preprocess
теперь выводит предупреждение о том, что вы больше не должны его использовать.