jugando con Rails 7 e importando mapas. Intentando importar una carpeta con algún JS personalizado.
# config/importmap.rb pin_all_from "app/javascript/custom", under: "custom" # app/javascript/application.js import "custom" Da error de tipo no detectado: no se pudo resolver el especificador de Uncaught TypeError: Failed to resolve module specifier "custom" en Chrome y Uncaught Error: Unable to resolve specifier 'custom' from [shim] en Firefox
Curiosamente, import "custom/script" funciona bien.
¿Qué estoy haciendo mal?
Tuve este mismo problema y encontré la siguiente solución:
# app/javascript/application.js import "custom/my_custom_code.js" Esto significa que pin_all_from "app/javascript/custom", under: "custom" en realidad solo hace que cada archivo JS personalizado esté disponible en el espacio de nombres custom . Por lo tanto, aún necesita importar cada archivo individualmente.
Si bien esto podría ser algo válido para hacer en algunos casos de uso, creo que lo que estaba tratando de hacer era un poco como un antipatrón en Rails 7.
Es muy fácil usar controladores Stimulus en su lugar.
Manual de Estímulo Para referencia
Por ejemplo, para descartar una alerta cuando un usuario hace clic en la "x"
// app/javascript/alerts_controller.js import { Controller } from "@hotwired/stimulus" export default class extends Controller { dismiss () { this.element.style.display = 'none'; } } <div data-controller="alerts"> <h2> Alert! </h2> <span data-action="click->alerts#dismiss"><i class="fas fa-times"></i></span> </div>