我有一个Error.svelte组件,它有一个包含可写存储的<script context="module">和一个导出的“addError”函数,用于更改存储内容。
Error.svelte
<script context="module">
import {get, writable} from "svelte/store";
let errorStore = writable([])
export function addError(error) {
let errors = get(errorStore)
errors.push(error)
errorStore.set(errors)
throw error
}
</script>App.svelte
<script>
import Error, {addError} from './Error.svelte'
import DifferentComp from './DifferentComp.svelte'
</script>
<Error />
<button on:click={() => addError(new Error('error message'))}>
addError() from App
</button>
<DifferentComp />
DifferentComp .svelte
<script>
import {addError} from './Error.svelte'
</script>
<button on:click={() => addError(new Error('error message'))}>
addError() from DifferentComp
</button>当从组件导入并运行此函数时,运行正常,但从App.svelte获得错误消息" error:'target‘is a required option“
有关现场演示,请参阅this REPL
从App.svelte导入和从另一个组件导入有什么不同吗?错误是有原因的,还是这只是一个bug?
发布于 2021-11-01 12:03:55
问题是,在您的App.svelte中,您正在使用导入的Error svelte组件来隐藏全局Error构造函数。在DifferentComp中,new Error()意味着“创建错误”,而在App.svelte中,它意味着“创建错误组件的实例”。将默认导入重命名为其他名称,即可正常工作。
https://stackoverflow.com/questions/69795416
复制相似问题