0

我有一个问题,我想将所有组件提取到单独的存储库中,但我想通过 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 的情况下在本地运行它。

4

0 回答 0