Backend не перенаправляется с новым методом Date (). ToISOString () - Node JS - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь сохранить загрузку изображений на моем сервере через атрибут имени файла, который мне предоставляет промежуточное программное обеспечение Multer. Встречаясь с очень странной ошибкой.

Следуя примеру моего инструктора, я сначала сохранил имя файла, используя синтаксис file.filename + '-' + file.original name. Кажется, работает правильно; я еще не запустил бэкэнд, поэтому я перенаправлен на страницу с кодом 500 статуса. Изображение также будет сохранено в целевой папке 'images' на моем сервере nodejs.

const fileStorage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'images');
  },
  filename: (req, file, cb) => {
    cb(null, file.filename + '-' + file.originalname);
  }
});

Вот соответствующее промежуточное ПО для multer:

app.use(multer({storage: fileStorage }).single('image'));

Далее я подправляю метод fileStroage и попробуйте его сохранить в дате со стилем скриншота, используя новый метод Date (). toISOString ().

 const fileStorage = multer.diskStorage({
      destination: (req, file, cb) => {
        cb(null, 'images');
      },
      filename: (req, file, cb) => {
        cb(null, new Date().toISOString() + '-' + file.originalname);
      }
    });

Но вместо того, чтобы перенаправлять обратно на страницу ошибок бэкенда, я получаю эту ошибку с моим приложением.

TypeError: Cannot read property 'isLoggedIn' of undefined
    at C:\Users\Bhowal Soham\Desktop\NODE_Project\app.js:117:34
    at Layer.handle_error (C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\layer.js:71:5)
    at trim_prefix (C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\index.js:315:13)
    at C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\index.js:284:7        
    at Function.process_params (C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\index.js:335:12)
    at next (C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\index.js:275:10)    at Layer.handle_error (C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\layer.js:67:12)
    at trim_prefix (C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\index.js:315:13)
    at C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\index.js:284:7        
    at Function.process_params (C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\index.js:335:12)
    at next (C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\index.js:275:10)    at Layer.handle_error (C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\layer.js:67:12)
    at trim_prefix (C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\index.js:315:13)
    at C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\index.js:284:7        
    at Function.process_params (C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\index.js:335:12)
    at next (C:\Users\Bhowal Soham\Desktop\NODE_Project\node_modules\express\lib\router\index.js:275:10)

isLoggedIn относится к одному из параметров, которые я пытаюсь установить локально с res.locals для каждого из моих входящих запросов. Хронологически. это одно из первых промежуточных программ, которые запускаются в моем приложении.

app.use((req, res, next) => {
  res.locals.isAuthenticated = req.session.isLoggedIn;
  console.log(req.session.isLoggedIn);
  res.locals.csrfToken = req.csrfToken();
  if (!req.session.user) {
    return next();
  }
  res.locals.username = req.session.user.name;
  next();
});

Изначально я догадался, что ошибка связана с параметрами fileFilter, которые я позже попытался добавить к своему промежуточному программному обеспечению. Теперь приложение работает нормально (без метода Date), но действительно странно, что я получаю такую ​​странную ошибку с методом Date (). ToISOString (). Я имею в виду, что запрос пропускает одно из моих универсальных промежуточных программ, это должно быть одна из самых странных ошибок, которые я пытался отладить. О, и не говоря уже о том, что у моего инструктора не было таких ошибок, когда он пробовал метод даты в своем видео.

Есть идеи, что может пойти не так? Могу ли я пропустить сторонний пакет или что-то? Потому что было бы очень удобно получить опцию хранения по дате для моих загрузок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...