标签: express-router

TypeScript/Eslint 在 Express Router 异步路由上抛出“Promise returned”错误

我有以下端点设置来在测试运行后重置数据库:

import { getConnection } from 'typeorm';
import express from 'express';
const router = express.Router();

const resetDatabase = async (): Promise<void> => {
  const connection = getConnection();
  await connection.dropDatabase();
  await connection.synchronize();
};

// typescript-eslint throws an error in the following route:
router.post('/reset', async (_request, response) => {
  await resetTestDatabase();
  response.status(204).end();
});

export default router;
Run Code Online (Sandbox Code Playgroud)

此后的整个路线都async带有下划线,并带有 typescript-eslint 错误Promise returned in function argument where a void return was expected.

该应用程序工作完美,但我不确定我是否应该执行更安全的实现,或者只是忽略/禁用此应用程序的 Eslint。知道该代码有什么问题吗?

node.js typescript eslint typeorm express-router

14
推荐指数
3
解决办法
2万
查看次数

快速中间件调用多次

我已经检查了与此主题相关的其他帖子,但在我的代码中找不到问题.

const myMiddleware = (fn) => {
    return (req, res, next) => {
        var fullUrl = req.protocol + '://' + req.get('host') + req.url;
        console.log(fullUrl)
        next()
    }
}

const app = express()

app.use('/dist', express.static(__dirname + '/client/dist'))
app.use('/static', express.static(__dirname + '/client/static'))

app.use(bodyParser.urlencoded({ extended: false }))
app.use(cookieParserMiddleware())
app.use(passport.initialize())

const server = https.createServer(options, app)

app.get('/', myMiddleware((req, res) => {
    res.sendFile(__dirname + '/client/dist/index.html')
}))

app.all('*', (req, res) => {
    res.redirect('/')
})

server.listen(8080, function listening() {
    console.log('Listening on %d', server.address().port)
})
Run Code Online (Sandbox Code Playgroud)

没有myMiddlewareon '/'路径,一切都按预期工作.与 …

javascript middleware node.js express express-router

6
推荐指数
1
解决办法
572
查看次数

无法向现有子网添加委派

我正在尝试将现有 VNET 包含在应用服务中,但我遇到了以下问题:

无法向现有子网添加委派。: 子网委派 /subscriptions 不能从 [] 更改为 [Microsoft.Web/serverfarms],因为它正被资源使用

天蓝色限制?一个 VNET 可以使用多少资源?

azure asp.net-core vnet express-router

6
推荐指数
1
解决办法
3604
查看次数

收到错误 PayloadTooLargeError: 在使用express.Router() Post调用的情况下请求实体太大

我正在尝试通过 Express 使用路由器进行 POST 呼叫,但收到请求实体太大错误,有人可以帮助解决该问题吗?

我想为我的 POST 调用负载设置 mb 限制。我尝试过通过 body-parser 设置 app.use() 限制,但似乎遇到了同样的问题。

谢谢

node.js express express-router

6
推荐指数
1
解决办法
1万
查看次数

如何优雅地处理快递中的承诺拒绝

我有以下快递控制器

class ThingsController {

  static async index(req, res, next) {
    try {
      const things = await Thing.all();
      res.json(things);
    } catch(err) {
      next(err);
    }  
  }
}
Run Code Online (Sandbox Code Playgroud)

和路由器

router.route('/things').get(ThingsController.index)
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我计划使用几个控制器来渲染结果

我不想每次都重复 try/catch 块

我的第一个解决方案是将此逻辑提取到处理承诺拒绝功能中:

const handlePromiseRejection = (handler) =>

  async (req, res, next) => {
    try{
      await handler(req, res, next);
    } catch(err) {
      next(err);
    };
  };
Run Code Online (Sandbox Code Playgroud)

现在我们可以从 ThingsController.index 中删除 try/catch 块,并且需要将路由器更改为:

router.route('/things')
  .get(handlePromiseRejection(ThingsController.index))
Run Code Online (Sandbox Code Playgroud)

但是添加handlePromiseRejection每条路线可能是一项乏味的任务,我希望有更聪明的解决方案。

你有什么想法?

promise express es6-promise express-router

3
推荐指数
1
解决办法
2758
查看次数

Route.get() 需要一个回调函数,但得到了一个 [object Undefined]。我做错了什么?

我在其他页面和论坛上查了很多答案,但我仍然没有明白。我做错了什么?帮我

*已编辑。我添加了需要路由和 app.use。看起来函数 isLOGgedIn 没有导出,但我不知道该怎么做。我在另一个应用程序中确实喜欢这个,它在那里工作。

auth-routes.js

const express = require("express"),
  router      = express.Router(),
  passport    = require("passport")

function isLoggedIn(req, res, next) {
  if (req.isAuthenticated()) {
    return next()
  }

  res.redirect("/auth/login")
}

module.exports = router
Run Code Online (Sandbox Code Playgroud)

用户路由.js

const express  = require("express"),
  router = express.Router(),
  authRoutes = require("./auth-routes")   

router.get("/profile", authRoutes.isLoggedIn, (req, res) => {
  res.render("user/profile", {user: req.user})
})

module.exports = router
Run Code Online (Sandbox Code Playgroud)

需要路由

const titleRoutes = require("./routes/title-routes")
const authRoutes = require("./routes/auth-routes")
const userRoutes = require("./routes/user-routes")   
Run Code Online (Sandbox Code Playgroud)

应用程序使用

app.use(titleRoutes)
app.use("/auth", authRoutes)
app.use("/user", userRoutes)
Run Code Online (Sandbox Code Playgroud)

javascript node.js express express-router

3
推荐指数
1
解决办法
3321
查看次数

Express.js - req.query vs req.params

在将此标记为重复之前,请理解我无法从其他答案中获得我正在寻找的解释.

如果我正在做一个寻找基于URL ID的客户应用程序,是什么说的区别customers/1234,并使用req.paramscustomers?id=1234使用req.query?两个url数据方法的作用有何不同?

http url-routing node.js express express-router

2
推荐指数
1
解决办法
2373
查看次数

Express Routes 无法解析到端点

我在 Firebase Cloud Functions 上运行它,所以在我的index.js 中,我有以下代码片段:

const admin = require("firebase-admin");
const functions = require("firebase-functions");
const usersApi = require("./api/users")
const paymentsApi = require("./api/payments")
const express = require('express');
const cors = require('cors');

const app = express();

const checkHeader = async(req, res, next) => {
  if(req.headers.authorization) {
    admin.auth().verifyIdToken(req.headers.authorization)
    .then(token => {
      req.uid = token.uid;
      req.email = token.email;
      req.stripeID = token.stripeID || null;
      return next();
    })
    .catch(e => {
      return next(e.errorInfo.code)
    })
  } else {
      return next('No token found');
  }
}

app.use(cors({origin: …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express express-router

1
推荐指数
1
解决办法
400
查看次数

如何使用多个路由在 express.js 中调用相同的方法?

现在我有两条路线,调用相同的方法。

假设方法的名称是myMethod 并且两条路线是//:params

router.get("/", myMethod);
router.get("/:param", myMethod);
Run Code Online (Sandbox Code Playgroud)

由于在这两种情况下我都必须调用相同的方法,因此我想使用单个路由来调用myMethod。像这样的东西,

router.get('/' or '/:param', methodName);

如果可能,那么我该怎么做?

routes node.js express express-router

0
推荐指数
1
解决办法
88
查看次数

Route.post() 需要一个回调函数,但得到一个 [object Undefined] (即使我已经给出了回调函数)

我正在创建一个简单的博客后端(API)。

我尝试创建路由器,但现在遇到一个问题,我不明白如何调试。

这是路由器。

const express = require('express');
const Article = require('../models/Article')
let router = express.Router();
const app = require('../app');


router.get('/:articleId', (req,res) => {
    Post.findOne({_id : req.params.articleId})
    .then(doc => {
        if(!doc) res.send('No such post in DB')
        res.send(doc).sendStatus(200)
    })
    .catch(err => res.send({'error' : `you got some error - ${err}`}).sendStatus(400))
})

router.post('/', app.auth, async (req,res)=>{
    if(req.auth) {
        const doc = await User.findOne({uname : req.user});
        const article = {
            authorId : doc._id,
            article : {
                title : req.body.title,
                content : req.body.article
            },
            tags : …
Run Code Online (Sandbox Code Playgroud)

mongoose node.js express express-router

0
推荐指数
1
解决办法
4870
查看次数