Для достижения обеих ваших целей вы можете включить код в файл app.js.App.js запускается только при запуске экспресс-сервера.Не обновляется при обновлении страницы.Вы можете запустить app.listen после окончания чтения.
var myMap = {};
fs.createReadStream('filename.csv')
.pipe(csv())
.on('data', (row) => {
// Build javascript object
myMap[row['key']] = row['value'];
})
.on('end', () => {
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
});
Однако, поскольку я не думаю, что у вас будет много данных, лучше использовать синхронные (блокирующие) методы,как для парсера csv, так и для чтения файлов.Это просто облегчает понимание.Я использую csv-parse ниже.
const express = require('express')
const fs = require('fs')
const parse = require('csv-parse/lib/sync')
const app = express()
const port = 3000
/* In this example assume myMap will be
/ `
/ "key_1","key_2"
/ "value 1","value 2"
/ `
*/
var myMap = fs.readFileSync('sample.csv', 'utf8');
/* parsing the csv will return:
/ [Object {key_1: "value 1", key_2: "value 2"}]
*/
const records = parse(myMap, {
columns: true,
skip_empty_lines: true
})
app.get('/', (req, res) => res.send('Hello World!' + records[0].key_1))
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
проверить его на runkit