2017-07-27 3 views
0

J'ai un fichier Node.JS qui affiche les résultats des tests d'analyse de chargement de page. J'ai stocké les résultats dans un fichier results.json, avec JSON.stringify().Rendu HTML depuis JSON avec moustache

launchChromeAndRunLighthouse('https://www.microsoft.com/en-us/', flags, perfConfig).then(results => { 
    fs.appendFile('results.json', JSON.stringify(results), (err) => { 
     if(err){ throw err; } 
     console.log('Data was appended to file!'); 
     var myObj = results.json; //problematic 
     var JSON_to_HTML = mustache.render('This test was generated at this time: {{generatedTime}}.', myObj); //problematic 
    }); 
}); 

Maintenant, je veux afficher les résultats dans le navigateur, donc je veux traduire le JSON en HTML. Je veux utiliser la moustache pour cela, mais ces lignes ne fonctionnent pas pour moi:

var myObj = results.json; 
var JSON_to_HTML = mustache.render('Test was generated at this time: {{generatedTime}}.', myObj); 

Je l'erreur « résultats ne sont pas définis », le fichier JSON ne peut pas être lu par la moustache comme ça. Je ne peux pas initialiser "myObj" avec le JSON brut, car il s'agit d'environ un million de lignes (et j'ai besoin d'exécuter plus tard des tests pour tout un tas de pages, donc je ne peux pas le coder en ce moment).

Je ne sais pas comment traduire ce fichier JSON que j'ai maintenant en HTML. Quelqu'un a-t-il une idée? Je suis un débutant à Node et Moustache, tous les conseils sont très appréciés.

+0

'launchChromeAndRunLighthouse' doit retourner undefined. Vous vérifiez que la moustache fonctionne en affichant des données statiques 'console.log (moustache.render ('{{foo}}', {foo: 'bar'}))' devrait contenir 'bar'. –

+0

Lorsque j'essaie 'console.log (moustache.render ('{{foo}}', {foo: 'bar'}))' dans un nouveau fichier, je reçois un message d'erreur indiquant que moustache n'est pas définie. Je l'ai installé, initialement globalement mais ensuite localement. Y at-il autre chose que je devrais faire pour utiliser la moustache? EDIT: Je peux ouvrir le fichier JSON et voir les résultats des tests, ce n'est pas indéfini ... –

Répondre

0

Beaucoup de recherches sur Google m'ont conduit à ma propre réponse.

Pour lire le fichier JSON des résultats de test et en faire une page HTML, j'ai dû créer un fichier package.json pour ce module Node (exécuté npm init). Après avoir créé le fichier, je l'ai ouvert en sublime et édité le scripts alors une commande CLI 'build' prendrait le fichier .json, prendrait un fichier .mustache avec les choses que je voulais afficher à partir du fichier .json, et collerais les dans un fichier .html.

"scripts": { "build": "mustache results.json basicTemplate.mustache > theDisplay.html", "test": "echo \"Error: no test specified\" && exit 1" },

results.json est où je en de chaîne de caractères, de la question. basicTemplate.mustache est pour l'instant

{{generatedtime}} {{initialurl}}

et theDisplay.html est juste un modèle html de base (comme this).

Maintenant, lorsque je cours node <name of node module>, le fichier de résultats est généré. Ensuite, je lance npm run build, et ce script que je viens de créer dans le package.json est exécuté. Cela modifie theDisplay.html. Vous devriez maintenant être capable de double-cliquer sur le Display.html dans le Finder, et un navigateur s'ouvre avec le temps que les tests ont été générés, ainsi que l'URL de la page testée.