我有一个问题,我想将所有组件提取到单独的存储库中,但我想通过 composer 而不是 npm(业务决策)加载它们。
这一切都很好。将其作为依赖项添加到 composer.json 文件中,然后将以下内容添加到 webpack.mix.js 文件中;
mix.webpackConfig({
resolve: {
alias: {
'@ui' : path.resolve(__dirname, 'vendor/companyname/ui/src'),
}
}
});
然后使用以下内容将它们导入;
import PrimaryButton from "@ui/buttons/primary";
这一切都很好!
直到我想使用插槽。如果我包含一个插槽,我会收到以下错误;
Uncaught (in promise) TypeError: Cannot read properties of null (reading 'nodeName')
at new create (svg.js?1929:3616)
at globalRef.SVG (svg.js?1929:31)
at Proxy.mounted (Editor.vue?721f:63)
at callWithErrorHandling (runtime-core.esm-bundler.js?5c40:154)
at callWithAsyncErrorHandling (runtime-core.esm-bundler.js?5c40:163)
at Array.hook.__weh.hook.__weh (runtime-core.esm-bundler.js?5c40:2909)
at flushPostFlushCbs (runtime-core.esm-bundler.js?5c40:357)
at flushJobs (runtime-core.esm-bundler.js?5c40:393)
在此示例中,组件如下所示;
<template>
<button @click="click">
<slot></slot>
</button>
</template>
<script>
export default {
emits: ['click'],
methods: {
click() {
this.$emit('click')
}
}
}
</script>
现在,如果我将此组件复制到项目存储库中并以这种方式加载它,则不会出现错误并按预期工作!
谁能指出我出错的方向。
更新
我已经从我正在渲染的视图中删除了其他组件,现在出现了一个新错误;
Uncaught (in promise) TypeError: Cannot read properties of null (reading 'isCE')
at renderSlot (runtime-core.esm-bundler.js?c099:5832)
at Proxy.render (primary.vue?f782:3)
at renderComponentRoot (runtime-core.esm-bundler.js?5c40:1166)
at componentEffect (runtime-core.esm-bundler.js?5c40:5201)
at reactiveEffect (reactivity.esm-bundler.js?a1e9:42)
at effect (reactivity.esm-bundler.js?a1e9:17)
at setupRenderEffect (runtime-core.esm-bundler.js?5c40:5154)
at mountComponent (runtime-core.esm-bundler.js?5c40:5113)
at processComponent (runtime-core.esm-bundler.js?5c40:5071)
at patch (runtime-core.esm-bundler.js?5c40:4673)
更新
这不是答案,而是原因,据我所知,有两个 Vue 实例在运行,一个来自库,一个在我的应用程序中。我不知道如何阻止这种情况,但是如果我将内容推送到仓库并通过 npm 将其拉入,那么它可以正常工作。仍然想知道如何在不使用 npm 的情况下在本地运行它。