element-plus: [Bug Report] on-demand-import using vite not working for infinite-scroll directive

Element Plus version

1.1.0-beta.14

OS/Browsers version

Windows / Chrome 94

Vue version

3.2.13

Reproduction Link

Steps to reproduce

// in vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig(({ mode }) => {
  return {
    plugins: [
      vue(),
      Components({
        resolvers: [ElementPlusResolver()],
      }),
    ],
  }
});
// in any component

<template>
  <ul v-infinite-scroll="load" class="infinite-list" style="overflow: auto">
    <li v-for="i in count" :key="i" class="infinite-list-item">{{ i }}</li>
  </ul>
</template>

<script lang="ts">
import { defineComponent, ref } from 'vue'

export default defineComponent({
  setup() {
    const count = ref(0)
    const load = () => {
      count.value  = 2
    }
    return {
      count,
      load,
    }
  },
})
</script>

<style lang="scss">
.infinite-list {
  height: 300px;
  padding: 0;
  margin: 0;
  list-style: none;

  .infinite-list-item {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 50px;
    background: var(--el-color-primary-light-9);
    margin: 10px;
    color: var(--el-color-primary);
    &   .list-item {
      margin-top: 10px;
    }
  }
}
</style>

What is Expected?

No warnings or errors

What is actually happening?

  1. Warning in console Failed to resolve directive: infinite-scroll
  2. Error in loading the component

image

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 24 (5 by maintainers)

Most upvoted comments

找到原因了vite.config.jsbuild.rollupOptions.output.manualChunks 用来配置代码拆分时的问题具体请看图,这应该也是一个bug,但是我不知道怎么修复:

正确拆分方式只能是: manualChunks(id) { if (id.includes('node_modules')) { return id.toString().split('node_modules/')[1].split('/')[0].toString(); } }

image

@YunYouJun

unplugin-vue-components and unplugin-element-plus only registers for components and styles, please register directives by yourself.

@adarshmadrecha OK, I will do this.