Error in svelte.config.js and Error: Identifier is expected in scss style tag - Svelte
Error in svelte.config.js and Error: Identifier is expected in scss style tag - Svelte
我的一些包含 <style lang="scss">
标签的 .svelte 文件出现以下错误。
Error in svelte.config.js
Error: Identifier is expected (23:9)
21: flex-direction: column;
22: align-items: center;
23: * {
^
24: padding: 0 0 1rem 0;
25: width: 50vw;
错误总是指向同一个文件,/src/routes/blog/_blog.svelte
,这是 mdsvex 的布局文件。我会忽略该错误,因为该页面可以正常工作,否则无法正常工作,但该错误使我无法 运行 开发服务器、构建或预览。我可以通过删除有问题的样式标签、启动服务器然后将其添加回去来解决这个问题。取消注释并保存页面后加载正常并且服务器没有错误。
违规的样式标签是:
<style lang="scss">
.container {
display: flex;
flex-direction: column;
align-items: center;
* {
padding: 0 0 1rem 0;
width: 50vw;
:global(p) {
padding-bottom: 1rem;
}
:global(blockquote) {
margin: .5rem 0 1rem 1rem;
padding: 1rem .5rem 0 1rem;
border-left: 2px solid $orange;
}
:global(ul) {
margin-top: .5rem;
}
:global(li) {
margin-left: 1.5rem;
}
:global(code) {
font-family: 'Courier New', Courier, monospace;
background-color: $bg-secondary;
padding: .25rem;
border-radius: 5px;
}
:global(pre) {
font-family: 'Courier New', Courier, monospace;
background-color: $bg-secondary;
padding: .25rem;
border-radius: 5px;
max-width: fit-content;
margin-bottom: .5rem;
}
:global(img) {
max-width: 50vw;
}
}
h1,h2,h3 {
padding-bottom: 0;
}
}
</style>
我的svelte.config.js是:
import adapter from '@sveltejs/adapter-auto';
import sveltePreprocess from 'svelte-preprocess';
import { mdsvex } from 'mdsvex'
/** @type {import('@sveltejs/kit').Config} */
const config = {
kit: {
adapter: adapter()
},
extensions: ['.svelte', '.md'],
preprocess: [
sveltePreprocess({
scss: {
prependData: `@import './src/style/app.scss';`
}
}),
mdsvex({
extensions: ['.md'],
layout: {
blog: 'src/routes/blog/_blog.svelte'
}
})
],
};
export default config;
我的版本是:
苗条:v3.46.4
svelte 预处理:v4.10.4
sass:v1.49.9
mdsvex: v0.10.5
看起来这是 MDsveX issue:116 中的一个错误:(
这与 Bob Fanger 指出的 MDsveX issue:116 有关。当前的解决方法是“将您的实际布局包装在另一个 'plain' svelte 组件中,它只传递 frontmatter 道具”(来自 GH 线程中的 jfcislak)。
新文件是:
svelte.config.js
...
preprocess: [
sveltePreprocess({
scss: {
prependData: `@import './src/style/app.scss';`
}
}),
mdsvex({
extensions: ['.md'],
layout: {
blog: 'src/routes/blog/blogLayout.svelte'
}
})
],
...
blogLayout.svelte
<script lang="ts">
import Layout from './_blog.svelte'
export let title
export let date
</script>
<Layout title={title} date={date}>
<slot />
</Layout>
_blog.svelte
不变。
我的一些包含 <style lang="scss">
标签的 .svelte 文件出现以下错误。
Error in svelte.config.js
Error: Identifier is expected (23:9)
21: flex-direction: column;
22: align-items: center;
23: * {
^
24: padding: 0 0 1rem 0;
25: width: 50vw;
错误总是指向同一个文件,/src/routes/blog/_blog.svelte
,这是 mdsvex 的布局文件。我会忽略该错误,因为该页面可以正常工作,否则无法正常工作,但该错误使我无法 运行 开发服务器、构建或预览。我可以通过删除有问题的样式标签、启动服务器然后将其添加回去来解决这个问题。取消注释并保存页面后加载正常并且服务器没有错误。
违规的样式标签是:
<style lang="scss">
.container {
display: flex;
flex-direction: column;
align-items: center;
* {
padding: 0 0 1rem 0;
width: 50vw;
:global(p) {
padding-bottom: 1rem;
}
:global(blockquote) {
margin: .5rem 0 1rem 1rem;
padding: 1rem .5rem 0 1rem;
border-left: 2px solid $orange;
}
:global(ul) {
margin-top: .5rem;
}
:global(li) {
margin-left: 1.5rem;
}
:global(code) {
font-family: 'Courier New', Courier, monospace;
background-color: $bg-secondary;
padding: .25rem;
border-radius: 5px;
}
:global(pre) {
font-family: 'Courier New', Courier, monospace;
background-color: $bg-secondary;
padding: .25rem;
border-radius: 5px;
max-width: fit-content;
margin-bottom: .5rem;
}
:global(img) {
max-width: 50vw;
}
}
h1,h2,h3 {
padding-bottom: 0;
}
}
</style>
我的svelte.config.js是:
import adapter from '@sveltejs/adapter-auto';
import sveltePreprocess from 'svelte-preprocess';
import { mdsvex } from 'mdsvex'
/** @type {import('@sveltejs/kit').Config} */
const config = {
kit: {
adapter: adapter()
},
extensions: ['.svelte', '.md'],
preprocess: [
sveltePreprocess({
scss: {
prependData: `@import './src/style/app.scss';`
}
}),
mdsvex({
extensions: ['.md'],
layout: {
blog: 'src/routes/blog/_blog.svelte'
}
})
],
};
export default config;
我的版本是:
苗条:v3.46.4
svelte 预处理:v4.10.4
sass:v1.49.9
mdsvex: v0.10.5
看起来这是 MDsveX issue:116 中的一个错误:(
这与 Bob Fanger 指出的 MDsveX issue:116 有关。当前的解决方法是“将您的实际布局包装在另一个 'plain' svelte 组件中,它只传递 frontmatter 道具”(来自 GH 线程中的 jfcislak)。
新文件是:
svelte.config.js
...
preprocess: [
sveltePreprocess({
scss: {
prependData: `@import './src/style/app.scss';`
}
}),
mdsvex({
extensions: ['.md'],
layout: {
blog: 'src/routes/blog/blogLayout.svelte'
}
})
],
...
blogLayout.svelte
<script lang="ts">
import Layout from './_blog.svelte'
export let title
export let date
</script>
<Layout title={title} date={date}>
<slot />
</Layout>
_blog.svelte
不变。