J'ai un problème de débogage de JS minifié sur le serveur de production. Bien que vous ne puissiez pas détecter certaines erreurs sur votre machine lors du test des serveurs de développement/prod, il est possible d'envoyer des erreurs frontales et des exceptions de l'utilisateur au journal spécial. Lorsque les fichiers JS sont minifiés, le débogage de ce code devient un enfer. Quelles sont les meilleures pratiques pour effectuer un tel travail?
Donc, après un certain temps, nous avons continué à essayer de résoudre de sacrés problèmes et nous sommes tombés sur cette bibliothèque qui vous permet de mapper votre pile sur une version non réduite de la construction.
https://github.com/mozilla/source-map
Nous en avions besoin pour l'intégrer à notre système interne qui collecte les rapports d'erreur. Il existe également des solutions prêtes sur le Web si vous n'avez pas besoin des vôtres comme nous le faisons:
Ce que la plupart des gens font normalement, c'est qu'ils ont un javascript.min.js et un javascript.js. Si vous avez un fichier réduit, vous pouvez utiliser un outil en ligne comme: http://unminify.com/ pour le minimiser. Vous pouvez donc le déboguer plus facilement.
Une approche que vous pouvez essayer est un proxy inverse.
La fonction Chrome est OK, mais j'ai trouvé l'approche proxy plus stable (vous n'avez pas besoin de continuer à appuyer sur ce bouton embêtant {}) et cela fonctionnera sur tous les navigateurs (comme ceux qui ne pas la fonctionnalité de prettify de Chrome).
Le proxy se situe entre votre navigateur et le serveur Web (qui pourrait s'exécuter sur un serveur distant ou votre machine locale). Toutes les demandes Web passent par le proxy, à l'exception de celles que vous configurez pour servir à partir d'un emplacement différent. Dans ce cas, vous serviriez une version non réduite du fichier JavaScript à partir d'un emplacement local plutôt que la version réduite à distance. J'ai utilisé le proxy inverse nginx pour cela (sous Windows) mais je m'attends à ce que d'autres puissent être utilisés de la même manière (par exemple, le proxy HA).
Exemples d'étapes et de configuration ci-dessous:
Configurez votre fichier nginx\conf\nginx.conf quelque chose comme ça, les parties importantes sont l'alias d'emplacement (pour intercepter la demande de fichier JavaScript) et l'emplacement proxy_pass (pour transmettre toutes les autres demandes au serveur en amont):
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8081;
server_name localhost;
# the unminified version of the JavaScript file you want to debug
location /context/js/compressed.js {
alias "C:/dev/nginx-1.10.2/html/uncompressed.js";
}
# your remote web server
location / {
proxy_pass http://1.2.3.4:8080/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Démarrer nginx
open a command window (run cmd.exe)
cd\
cd C:\dev\nginx-1.10.2
start nginx
Ouvrez le navigateur, par exemple http: // localhost: 8081/context/index.html
Le proxy récupère toutes les ressources du serveur distant à l'exception du fichier demandé à http: // localhost: 8081/context/js/compressé.js que le proxy sert désormais à partir du fichier mis en cache localement (non minifié) ( c'est-à-dire le fichier uncompressed.js).
Si vous n'en avez pas, vous pouvez facilement créer votre fichier uncompressed.js avec un non-minifier/embellisseur (bien que le fichier précompressé d'origine serait besst car il aurait tous les noms significatifs). L'important est qu'il est fonctionnellement équivalent au fichier minifié.
Vous ne pouvez pas le "dé-minimiser" complètement mais vous pouvez "l'embellir", ce qui ne restaurera pas les noms de variables d'origine, mais cela rendra au moins le code plus facile à suivre. Voici ne bonne explication de la façon dont cela peut être fait dans le navigateur. Et voici un site Web où vous pouvez copier et coller du code pour l'embellir . Il existe également des plugins pour presque tous les éditeurs de texte et IDE qui produira les mêmes résultats.
J'espère que ça aide. Bon codage!
Vous pouvez minimiser les codes js en utilisant ceci Unminify Js . Vous pouvez également utiliser CSS Unminify pour annuler la minimisation des codes CSS ou vous devez annuler la minimisation de tout le code html, utilisez HTML Unminifier .
Bien sûr, vous pouvez simplement identifier les bugs après avoir minimisé le code javascript en utilisant ce site.