Express应用程序不允许我检查req中的内容

4

我知道我的问题可能不太具体,但是我描述发生的事情时有困难,因为我不理解它 :(

所以我写了一个小的express应用程序,带有ssr(用于react)和jwt身份验证。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进行测试,如下所示: 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未定义。我无法记录req,因为我看不到任何日志。我还尝试发送请求正文的字符串版本,但每次都会收到“TypeError:将循环结构转换为JSON”。如果您需要任何信息,我很乐意添加。
编辑:我稍后会在家里检查,但现在我认为我的应用程序的ssr部分有问题,因为我甚至没有看到“主服务器在端口3000上”的日志.....同时服务器响应正确的html、js文件和路由工作良好,所以......无论如何,我稍后会查找它。

1
奇怪,你能调试一下调用控制台语句的应用程序吗?我唯一的假设是你的应用程序在记录任何日志之前就失败了。 - James
2个回答

1
尝试使用util.inspect从Node:
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;
  ...
};    

0

我解决了它......出乎意料的是问题出在我的 package.json 文件中。 我的启动脚本看起来像这样:

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

正因为如此,我才遇到了这些奇怪的错误。只有api.bundle.js文件能够正确运行......不管怎样,感谢你的帮助;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接