node.js - Node js程序给了我“TypeError:无法读取未定义的属性'split'”
问题描述
我的 Node js 给了我上面的 TypeError。我正在尝试调用一个名为 mathsServer 的服务器,它将接收一个在 Postan 中发布的 json 字符串,例如
{ "tal": "10,343,24,345,22,23,233, 45, 200,500" }
它应该添加“tal”中的所有值并在浏览器上显示。这是我的代码:
应用程序.js
const path = require("path");
const express = require("express");
const app = express();
const router = require("./router");
const host = "127.0.0.1"
const port = 3000
app.use(express.urlencoded({extended: false}));
app.use(express.json());
app.use(express.static("public"));
app.set("views" , "views");
app.set("view engine", "hbs");
app.use("/", router);
app.listen(port, host, () => {
console.log(`The server is running at: http://${host}:${port}`);
});
路由器.js
const express = require("express");
const router = express.Router();
const controller = require("./controllers/controller");
router.get("/", controller.renderHomePage)
router.post("/add", controller.renderSum)
router.get("/add",controller.renderSum)
module.exports = router
控制器.js
const mathServerModel = require("../../../mathServer/model/mathModel");
const express = require("express");
const app = express();
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(express.json());
exports.renderSum = (req, res) => {
mathServerModel.addera(req.body.tal)
.then(function (data) {
console.log(data);
res.send({data});
res.render("post-tal", {
Sum: {data} // A property called Sum to be displayed on the browser
})
})
.catch(error => console.log(error))
}
数学模型.js
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
exports.addera = async (tal) => {
let strNumbersArr = tal.split(","); // ["10", "343", "24", ..., "233"]
let sum = 0;
for(let i = 0; i < strNumbersArr.length; i++) {
let currentNumberStr = strNumbersArr[i];
sum += Number(currentNumberStr); // convert current number string into a number
}
return sum;
}
解决方案
在阅读任何内容之前,您必须调用这些中间件req
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
只需在执行之前在您的入口点文件中调用这两个中间件renderSum
,这将解决问题
推荐阅读
- wordpress - 如何将全局样式包含到 elementor?
- c# - Visual Studio 将 XML 粘贴为类 - 忽略类型名称
- oracle - 为什么我不能在 PL/SQL 中执行匿名块?
- elasticsearch - ElasticSearch - 关于“top_terms_boost_N”重写参数的说明
- c++ - 入队,从输入文件中出队(结构数组)
- python - 函数/方法内的范围问题
- javascript - 如何在 JavaScript 中将 px 转换为 %(100% 以内)
- html - 为什么我的选择元素隐藏了进行中的元素?
- asp.net - 安卓手机打不开pdf文件
- visual-studio-code - 谷歌云外壳 .customize_environment 不工作