Para facilitar el desarrollo, quiero servir los archivos TM @require necesarios a través de un servidor HTTP(S) localhost. Esperaba que estos archivos se recargaran en cada recarga de página.
Los archivos se obtienen del servidor localhost cuando actualizo el UserScript en el editor de TM; sin embargo, no se obtienen cuando se carga una URL coincidente. No estoy seguro de si se trata de un almacenamiento en caché de TM o si estoy haciendo algo mal aquí.
Para separar las preocupaciones en los archivos JS, el encabezado UserScript se separa de otra lógica. Los archivos necesarios se importan usando @required. Este es el contenido del archivo UserScript que se pega en el editor TM:
// ==UserScript== // @name myName // @description myDescription // @author robinlarondelle // @version 0.1 // @namespace myNameSpace // @homepage myHomePage // @include *linkedin.com/* // @icon https://www.google.com/s2/favicons?domain=linkedin.com // @grant window.onurlchange // @require https://localhost:3000/public/myScript.user.js // ==/UserScript== El servidor de archivos estáticos HTTPS localhost es un servidor Node.JS con un certificado autofirmado para habilitar HTTPS. Cuando uso Postman y FireFox después de proporcionar mi archivo .pem , el servidor funciona como se esperaba. Si es necesario, puedo proporcionar más detalles sobre el servidor, pero no creo que el problema resida aquí.
FireFox prohíbe el acceso a archivos locales desde TM (ver este comentario ). Entonces, una alternativa a este problema sería simplemente usar Chrome, ya que admite el acceso a archivos locales. Sin embargo, quiero abstenerme de usar archivos locales porque hay varios desarrolladores trabajando en este proyecto. Tampoco quiero limitar el desarrollo a un navegador específico.
La pregunta/problema principal es: ¿Por qué @require del encabezado UserScript solo obtiene los archivos requeridos en Script Save en el editor TM, pero no en Page Reload cuando la URL coincide? ¿Es este comportamiento normal o podemos desactivarlo?
También he creado un problema de GitHub en el repositorio de Tampermonkey y a alguien se le ocurrió la solución:
Establezca la frecuencia de actualización de "Externos" en "Siempre". Esto obtendrá la etiqueta @require en la recarga de la página. Sin embargo, esto no funciona sin problemas y la mayoría de las veces se recuperará después de recargar la página (por lo que debe recargar dos veces).
De todos modos, esto resolvió el problema para mí.