Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

177
Vistas
Can't register component globally VUE 3

I have a reusable button and I want to render it as a separate component @/components/UI/MyButton'. This element i register in 'UI/index.js'

import MyButton from "@/components/UI/MyButton";

export default {
  MyButton,
};

and then I globally register through the method аorEach in 'main.js'.

import { createApp } from "vue";
import App from "./App";
import componentsUI from "./components/UI";

const app = createApp(App);

componentsUI.forEach((component) => {
  app.component(component.name, component);
});

app.mount("#app");

but method forEach causes an error "components_UI__WEBPACK_IMPORTED_MODULE_2_.default.forEach is not a function", and the project is not rendered. If I do not use this method, then the button is rendered but without styles.

How can I globally register a reusable component?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Try this:

In the components directory create the base folder then create _index.js.

// components/base/_index.js

const requireComponent = require.context(
  // The relative path of the components folder
  './',
  // Whether or not to look in subfolders
  false,
  // The regular expression used to match base component filenames
  /[A-Z]\w+Base\.vue$/
);

const register = (app) => {
  requireComponent.keys().forEach((fileName) => {
    const componentConfig = requireComponent(fileName);

    const componentName = fileName
      .split('/')
      .pop()
      ?.replace(/\.\w+$/, '');

    app.component(componentName, componentConfig.default || componentConfig);
  });
};

export default {
  register,
};

The name of the Button component must be like this(based on regex): ButtonBase.vue

// main.js

import { createApp } from 'vue';
import App from './App.vue';
import BaseComponents from './components/base/_index';

const app = createApp(App);

BaseComponents.register(app);

app.mount('#app');
about 4 years ago · Juan Pablo Isaza Denunciar

0

In UI/index.js try to export an array [] not an object {}:

import MyButton from "@/components/UI/MyButton";

export default [
  MyButton,
];
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda