【发布时间】:2021-02-01 13:00:37
【问题描述】:
app.js
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var passport = require('passport');
var localStrategy = require('passport-local');
var axios = require("axios");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
const KEY = "<key>";
app.use(require('express-session')({
secret: "this is Blogme session",
resave: false,
saveUninitialized: false
}));
app.get("/post", (req, res) => {
res.render("main/post.ejs")
})
app.get('/result', async function(req, res){
const { search } = req.params
const response = await axios.get('https://www.googleapis.com/youtube/v3/search',{
params:{
q: { search } ,
part: "snippet",
maxResults: 32,
key: KEY,
}
})
.catch(err => console.log(err))
res.render("main/eg.ejs", { response: response})
})
app.listen(process.env.PORT || 3000, process.env.IP, function(){
console.log("server has started");
})
例如,ejs
<html>
<head>
<title>Youtube Videos</title>
</head>
<body>
<div class="ui secondary pointing menu" style="height: 60px; align-items: center;">
<a class="active item">
Home
</a>
<a class="item">
Messages
</a>
<a class="item">
Friends
</a>
</div>
<div class="container">
<div class="row">
<% for(i=0;i<response.data.items.length;i++){ %>
<div class="col-md-3" style="display: flex; align-items: center; padding: 30px;">
<div>
<img src="<%= response.data.items[i].snippet.thumbnails.default.url %>"
alt="" style="width: 80%;"/>
<button class="btn btn-primary" style="width: 80%; margin-top: 10px;">Watch
Now</button>
</div>
</div>
<% } %>
</div>
</div>
</body>
</html>
post.ejs
<html>
<body>
<form action="/result" method="GET">
<input type="text" name="search" placeholder="Search videos" />
<button>Submit</button>
</form>
</body>
</html>
(节点:12752)UnhandledPromiseRejectionWarning:TypeError:无法解构“req.body.search”的属性“search”,因为它未定义。 在 C:\BlogMe\app.js:46:13 在 Layer.handle [as handle_request] (C:\BlogMe\node_modules\express\lib\router\layer.js:95:5) 在下一个 (C:\BlogMe\node_modules\express\lib\router\route.js:137:13) 在 Route.dispatch (C:\BlogMe\node_modules\express\lib\router\route.js:112:3) 在 Layer.handle [as handle_request] (C:\BlogMe\node_modules\express\lib\router\layer.js:95:5) 在 C:\BlogMe\node_modules\express\lib\router\index.js:281:22 在 Function.process_params (C:\BlogMe\node_modules\express\lib\router\index.js:335:12) 在下一个 (C:\BlogMe\node_modules\express\lib\router\index.js:275:10) 在 SessionStrategy.strategy.pass (C:\BlogMe\node_modules\passport\lib\middleware\authenticate.js:343:9) 在 SessionStrategy.authenticate (C:\BlogMe\node_modules\passport\lib\strategies\session.js:75:10) 尝试(C:\BlogMe\node_modules\passport\lib\middleware\authenticate.js:366:16) 在进行身份验证时(C:\BlogMe\node_modules\passport\lib\middleware\authenticate.js:367:7) 在 Layer.handle [as handle_request] (C:\BlogMe\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix (C:\BlogMe\node_modules\express\lib\router\index.js:317:13) 在 C:\BlogMe\node_modules\express\lib\router\index.js:284:7 在 Function.process_params (C:\BlogMe\node_modules\express\lib\router\index.js:335:12) (节点:12752)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志
--unhandled-rejections=strict(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝编号:14)
【问题讨论】:
-
你可以写一个提交处理程序
标签: javascript html node.js