Я работаю с Express веб-приложением, которое запускает JavaScript очистку кода при первой загрузке страницы.
Вот код очистки веб-узла (scrape. js):
const request = require('request-promise');
const cheerio = require('cheerio');
const fs = require('fs');
const data = require('../public/state_data.json');
const cases_data = require('../public/cases_data.json');
// retrieve wikipeida page
request('https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_the_United_States', (error, response, html) => {
if(!error && response.statusCode == 200) {
// create cheerio scraper
const $ = cheerio.load(html);
// find, and loop through all the rows in the table
var rows = $('.wikitable').find('tr');
for(var i = 3; i < 59; i++) {
// scrape state name and cases from table
var state = $(rows[i]).children('th:nth-child(2)').text().split("\n");
var cases = parseInt($(rows[i]).children('td').html().replace(",", ""));
// update state_data.json file w/ proper cases and per capita
for(var j = 0; j < data.length; j++) {
if(data[j].state === state[0]) {
// push new data to cases_data.json
cases_data.push({
state: state[0],
latitude: data[j].latitude,
longitude: data[j].longitude,
cases: cases,
percapita: (cases / data[j].population)
});
// write to new cases_data.json file w/ state name, cases and calculated per capita
fs.writeFile('../public/cases_data.json', JSON.stringify(cases_data, null, 2), function(err) {
if (err) throw err;
});
}
}
}
} else {
console.log('request error')
}
});
А вот приложение express (app. js):
const express = require('express');
const app = express();
const port = 3000;
const scrape = require('./scrape.js');
app.get('/', (req, res) => {
scrape();
res.render('index');
})
app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`))
Прямо сейчас, когда я запускаю 'приложение узла. js', я получаю это как ошибку:
TypeError: scrape не является функцией
Я пытался обернуть лом. js в функции, но безрезультатно. Любые идеи?