Ma première tentative d'application de noeud de base. Si je teste ce fichier (> node index.js) avec console.log (eventsArray) à la place, le tableau imprime avec succès les données du module scraper dans la fenêtre de commande, donc mon module scraper fonctionne. Et si j'ai défini eventsArray = ['this', 'is,' a ',' test ',' tableau ']; dans index.js comme test, ces chaînes apparaissent sur la page d'accueil comme je le veux après avoir exécuté l'application avec Express, donc le modèle Express + Jade fonctionne (pas besoin d'inclure mon template ejs ici car il fonctionne). Le problème: Si j'essaie d'exécuter l'application comme indiqué ci-dessous (> node index.js), eventsArray semble être 'indéfini' quand il est passé dans la fonction res.render, donc rien ne s'affiche sur localhost: 3000 (page d'accueil)Obtention d'un 'indéfini' lors du passage d'un tableau via la fonction Express res.render
index.js:
var myScraperModule = require('./src/scraper'); // import my scraper function
var express = require('express');
var app = express();
eventsArray = myScraperModule.getEvents(); // returns an array
app.set('port', process.env.PORT || 3000);
app.get('/', function(req, res) {
res.render('index.ejs', {data : eventsArray }); // send array to homepage
});
app.listen(app.get('port'), function(){
console.log("express started")
});
scraper.js:
// basic web scraper using scraperjs module
var scraperjs = require('scraperjs');
function getEvents(){
scraperjs.StaticScraper.create('https://examplewebsite.com/')
.scrape(function($) {
return $("p").map(function() {
return $(this).html();
}
}).get();
})
.then(function(data) {
//... clean up the data and return it as eventsClean
return eventsClean; // return an array of strings
}
});
}
module.exports = getEvents;
Hey, où est eventsClean défini, et il semble que GetEvents ne ne retourne rien? Vous pouvez ajouter 'callback' à la fonction getEvents ou utiliser 'Promise'. {return scraperjs.StaticScraper .... nouvelle promesse (function (resolve) {resolve (eventsClean)})} ou getEvents (callback) {... callback (eventsClean) ...} –