Express.js GET Route方法未定义吗?

时间:2019-09-18 23:13:54

标签: javascript node.js express

我遇到了这个问题。每当我在浏览器上发送GET请求时。我收到了此消息get undefined when using fetch on the browser

get undefined when using fetch on the browser

我不知道为什么,这是我的代码。

const express = require(‘express’);
const app = express();
const { quotes } = require(’./data’);
const { getRandomElement } = require(’./utils’);
const PORT = process.env.PORT || 3004;

app.use(express.static(‘public’));

const quotesRouter = express.Router();

app.use(’/api/quotes’, quotesRouter);

quotesRouter.get(’/random’,(req, res, next)=> {
  let randomQuote = (quotes);
  if (randomQuote) res.send(randomQuote);
  else res.status(404).send();
});

app.listen(PORT, () => {
  console.log(Server listening on ${PORT});
})

已更新

  

fetchRandomButton.addEventListener('click',()=> {
  fetch('/ api / quotes / random').then(response => {       如果(response.ok){         返回response.json();       }其他{         renderError(response);       }}。then(response => {       renderQuotes([response.quote]); }); });

请帮助我!感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这是您可能需要的快速代码的一项调整。但是,提取通常是前端javascript的东西,因此您确定在前端正确使用了它吗?

在提取文档中查看此处,以验证您在正确地调用提取。

const express = require(‘express’); 
const app = express(); 
const { quotes } = require(’./data’); 
const { getRandomElement } = require(’./utils’); 
const PORT = process.env.PORT || 3004;
app.use(express.static(‘public’)); 
const quotesRouter = express.Router(); 
quotesRouter.get(’/random’, (req,res,next)=> { 
  let randomQuote=getRandomElement(quotes); 
  if (randomQuote) {  
    res.send(randomQuote); 
  } else { 
    res.status(404).send(); 
  } 
}); 
app.use(’/api/quotes’, quotesRouter); <-- moved this to here
app.listen(PORT, ()=>{ console.log(Server listening on ${PORT}) })