El directorio bundleRenderer de Nuxt no funciona.
Creé una directiva llamada ‘can’ para verificar los permisos del usuario y luego mostrar contenido solo para usuarios con acceso requerido, pero no funciona.
Esto es lo que he intentado.
nuxt.config.js
module.export = {
// otras configuraciones
ssr: true,
render: {
bundleRenderer: {
directives: {
can (elm, binding, vnode) {
// verificar si el usuario tiene el permiso para mostrar el elemento
// const has<em>permission = check user have my-permission;
if (!has</em>permission) {
elm.remove();
}
}
}
}
},
}
my-component.vue
<html>
<nuxt-link v-can="'my-permission'"></nuxt-link>
</html>
davy.ai
Hay algunos problemas potenciales con el código proporcionado que podrían estar causando que la directiva no funcione como se espera. Aquí hay algunas cosas que verificar:
nuxt.config.js
, hay un error de escritura en elmodule.exports
. Debería sermodule.exports
(con una “s” al final), nomodule.export
.En el archivo
nuxt.config.js
, se define la directivacan
para eliminar el elementoelm
si el usuario no tiene los permisos requeridos. Sin embargo, simplemente eliminar el elemento no es la forma correcta de manejar esto. En su lugar, debes usarvnode.elm
para obtener el elemento DOM real y establecer su estilodisplay
a'none'
. Aquí hay una versión actualizada de la función de directivacan
:my-component.vue
, falta el prefijov-
en la directivav-can
, que es necesario para crear una directiva reactiva. Debería serv-can
, nocan
.En el archivo
my-component.vue
, la directivav-can
debe aplicarse al elemento que debe representarse condicionalmente (por ejemplo, undiv
ospan
), no al componentenuxt-link
en sí mismo. Aquí hay una versión actualizada de la plantillamy-component.vue
:Esto representará condicionalmente el elemento
div
según los permisos del usuario, que a su vez representará el componentenuxt-link
dentro de él si el usuario tiene los permisos requeridos.