【问题标题】:Error: Route.get() requires a callback function but got a [object Undefined]错误:Route.get() 需要回调函数,但得到了 [object Undefined]
【发布时间】:2018-05-10 02:00:14
【问题描述】:

我正在尝试使用 Express 作为我的后端创建一个食谱搜索应用程序,当我启动服务器时,我从我的路由器文件中收到标题中的错误消息。在我的路由器遵循与此处相同的项目之前,我已经制作了项目,但由于某种原因,我不断收到错误,我无法弄清楚为什么。下面我将代码粘贴到我的控制器、帮助程序和路由文件中:

控制器:

// import model and users controller
const Recipe = require('../models/recipe');
const usersController = require('../controllers/users-controller');

// initiate controller object
const recipesController = {}

// send API data
recipesController.sendApiRecipe = (req, res) => {
    res.json({
        message: `recipe returned`,
        recipe: res.locals.recipe,
    })
}

// show all favorited recipes
recipesController.index = (req, res, next) => {
    Recipe.findByUser(req.user.id)
    .then(recipe => {
        res.json({
            message: 'rendering favorites',
            data: { recipe },
        })
    }).catch(next)
}

// create favorite recipe
recipesController.create = (req, res) => {
    console.log(req.body, 'from create/recipesController')
    Recipe.create({
        title: req.body.title,
        diet: req.body.diet,
        calories: req.body.calories,
        servings: req.body.servings,
        health: req.body.health,
        ingredient: req.body.ingredient,
        img: req.body.img,
        link: req.body.link,        
        user_id: req.user.id,
    }).then(recipe => {
        res.json({
            message: 'successfully added',
            data: { recipe }
        })
    }).catch(err => {
        console.log(err)
        res.status(500).json({error: err})
    })
}

// delete favorite recipe
recipesController.delete = (req, res, next) => {
    Recipe.destroy(req.params.id)
    .then(() => {
        res.json({
            message: 'successfully deleted recipe',
        })
    }).catch(next)
}

export default recipesController;

助手:

// import dependencies
require('isomorphic-fetch')
require('dotenv').config()

function getRecipes(req, res, next) {
    // fetch URL
    fetch(`https://api.edamam.com/search?q=${req.params.search}&app_id=${process.env.APP_ID}&app_key=${process.env.APP_KEY}&from=0&to=30`)
    .then(res => res.json())
    // use res.locals to attach data to repsonse object
    .then(fetchRes => {
        // set fetched results to res.locals
        res.locals.recipe = fetchRes
        next()
    })
}

// export function
module.exports = {
    getRecipes: getRecipes,
}

路线:

// import dependencies
const express = require('express')
const recipeHelpers = require('../services/recipes/recipe-helpers')
const recipesController = require('../controllers/recipes-controller')

const recipesRouter = express.Router()

recipesRouter.get('/:search', recipeHelpers.getRecipes, recipesController.sendApiRecipe)
recipesRouter.post('/create', recipesController.create)

module.exports = recipesRouter;

如果我应该提供任何其他信息,请告诉我,我一定会跟进我在进一步排除故障时遇到的任何发现。提前感谢您的帮助!

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    我刚刚意识到我没有正确导出我的控制器,并解决了这个问题。谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 2021-04-03
      • 1970-01-01
      • 2022-01-11
      • 2020-09-14
      相关资源
      最近更新 更多