Как мне получить вспомогательный файл Express JS?

#javascript #node.js #express #ejs

#javascript #node.js #экспресс #ejs

Вопрос:

Я получаю ошибку возврата при попытке подстановки переменной типа:

TypeError: Cannot read property 'substr' of undefined

Это мой код:

 app.get('/reports/FUHAUHS9029019.CSV', function(req, res, next){
    var filepath = req.params.name;
    var ffilepath = filepath.substr(0,12);
    var filename = req.params.name;
    var ffilename = filename.substr(-18);
    
    console.log(ffilepath);

    res.send('filename: '   req.params.filepath.substr(-18));
    res.download(filename, edifilepath);
});
  

Как я могу получить подстроку из моего файла? и пытаюсь применить динамический маршрутизатор к этому маршрутизатору, но я также ничего не получаю от этого, кроме ошибки substr.

Большое вам спасибо : D

Комментарии:

1. req.params это пустой объект, потому что вы не указали никаких параметров в своем URL-адресе маршрута. Следовательно, req.params.name является undefined и, следовательно, вы не можете вызвать .substr() значение undefined . Пожалуйста, опишите, чего вы на самом деле пытаетесь достичь, словами, потому что ваш код не описывает реальную проблему, которую нужно решить здесь.

2. Люди могли бы написать лучшие и более полные ответы, если бы вы описали словами, чего именно вы пытаетесь достичь с помощью этого маршрута. В нынешнем виде вопрос довольно неясен. Пожалуйста, покажите примеры нескольких URL, которым вы хотите, чтобы маршрут соответствовал, а затем опишите, чего вы хотите достичь в маршруте.

Ответ №1:

вам нужно установить параметр:

 app.get('/reports/:name', function(req, res, next){

var filepath = req.params.name;
var ffilepath = filepath.substr(0,12);
var filename = req.params.name;
var ffilename = filename.substr(-18);

console.log(ffilepath);

res.send('filename: '   ffilename);
//res.download(filename, edifilepath); // also check this line
});
  

Комментарии:

1. Использование жестко закодированных констант, таких как 12 и -18 , для динамического строкового значения, указанного пользователем, которое может быть любым, вряд ли даст предсказуемо правильный результат.

2. Я согласен, но, возможно, он всегда знает длину параметра, который он собирается отправить

3. Я просто пытаюсь помочь с проблемой «‘substr’ of undefined»

4. Кроме того, вы не можете вызывать оба res.send() и res.download() по одному и тому же запросу. Вы можете отправить только ОДИН ответ. Не удается отправить несколько ответов на один и тот же запрос.

5. Я бы посоветовал вам изменить свой ответ на тот, в котором рассказывается только о том, как указать параметр в URL-адресе и как использовать req.param с этим параметром, а остальной код исключить из ответа.