Express应用程序不会让我检查要求中的内容

时间:2018-12-19 00:07:55

标签: node.js express jwt passport.js

我知道我的问题似乎不是很具体,但是由于我不了解,我无法描述正在发生的事情:( 因此,我用ssr(用于react)和jwt身份验证编写了小型Express应用程序。 SSR部分效果很好,但其余部分都很糟糕。....

import 'babel-polyfill';
import express from 'express';
import bodyParser from 'body-parser';
import logger from 'morgan';
import authRouter from './auth/authRouter';

const app = express();

app.use(express.static('public'));
app.use(logger('dev'));
app.use(bodyParser.json({ type: '*/*' }));
app.use(bodyParser.urlencoded({ extended: false }));

//a lot of irrelevant ssr code

authRouter(app);

app.listen(3000, function(err) {
  if (err) {
    console.log(err);
  }
  console.log('main server on port 3000');
});

这是我的主服务器文件。我的第一个问题是我没有从文件中看到任何console.logs。我的终端没有任何东西。这就是为什么我看不到我的应用程序中的请求的原因。我正在像这样用邮递员测试它: postman

这就是我在上面的主服务器文件中使用的authRouter:

import express from 'express';
import { signup, signin } from '../controllers/authentication';
import { jwtLogin, localLogin } from '../services/passport';
import passport from 'passport';

passport.use(jwtLogin);
passport.use(localLogin);
//if user is auth'd do not create session for him
const requireAuth = passport.authenticate('jwt', { session: false });
const requireSignin = passport.authenticate('local', { session: false });

const authRouter = function(app) {
  app.get('/auth', requireAuth, function(req, res) {
    res.send({ hi: 'there' });
  });
  app.post('/auth/signin', requireSignin, signin); // irrelevant right now
  app.post('/auth/signup', signup);
};
export default authRouter;

那是我在路由器中使用的注册功能:

const signup = (req, res, next) => {
  console.log('reqqqqqqq', req);
  const { email, password, passwordCheck } = req.body; //code crashes here

  //some code I deleted for everyones convenience
};

每个请求都使我的应用程序崩溃,因为req.body未定义。我无法记录请求,因为我看不到任何日志。我也尝试发送回请求主体的字符串化版本,但每次收到“ TypeError:将圆形结构转换为JSON”时,我都会尝试发送。 我很乐意添加您可能需要的任何信息

编辑: 我待会儿要在家里检查一下,但现在我想我的应用程序的ssr部分出了问题,因为我什至没有看到“端口3000上的主服务器”日志.....同时服务器以正确的html,js文件进行响应,并且路由工作正常,因此.....无论如何我以后都要查找

2 个答案:

答案 0 :(得分:1)

尝试从节点使用util.inspect

const util = require('util');

// usage in your code
const signup = (req, res, next) => {
  console.log(util.inspect(req, { showHidden: true, depth: null }));
  const { email, password, passwordCheck } = req.body;
  ...
};    

答案 1 :(得分:0)

我解决了.....意外的问题出在我的package.json文件中。 我的启动脚本如下所示:

"scripts": {
    "start": "nodemon build/server.bundle.js | nodemon build/api.bundle.js",
    ...
  }

因此,我遇到了这些奇怪的错误。只有api.bundle.js文件运行正常…… 无论如何,谢谢您的帮助;)