【发布时间】:2021-07-21 17:51:55
【问题描述】:
我试图通过从服务器端获取结果来在客户端显示一个字符串,但由于某种原因,它没有显示获取的数据。当我直接在 js 文件上控制台记录变量时,服务器成功打印了字符串。该程序不会将变量导出到客户端以显示它。我不知道我哪里出错了。任何帮助表示赞赏。提前致谢。
const router = require("express").Router();
const {
callName
} = require("pathJs");
router.route("PathRoute").get(async(req, res) => {
const Result = await callName();
return res.json(Result);
});
module.exports = router;
function name() {
const liner = "this works"
console.log(liner)
//updated
return liner;
}
async function callName() {
const data1 = await name()
return data1;
}
callName()
<p id="insertHere" style="color: white;"></p>
<script>
async function caller() {
await fetch(`http://localhost:5000/api/PATH`)
.then((res) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(res.json())
}, 1000)
})
}).then((response) => {
console.log(response)
document.getElementById("insertHere").innerHTML = response.liner
}
)
}
</script>
const express = require("express");
const cors = require("cors");
const routePath = require("./routePath");
const {
response
} = require("express");
require("dotenv").config({
debug: process.env.DEBUG
});
const port = process.env.PORT || 5000;
const app = express();
app.use(cors());
app.use(express.json());
app.use("/api", routePath);
app.listen(port, () => {
console.log(`server is running on port: http://localhost:${port}`);
});
【问题讨论】:
-
function name() {记录一个值,但它不返回任何内容。 -
我必须在函数
name中返回liner。 @昆汀 -
我返回了该函数下函数名中的所有数据。@Quentin
-
name没有return语句,因此它返回undefined。callName确实有一个return语句,它返回name的返回值......这是undefined所以callName返回(因为它是一个async函数)一个解析为undefined的承诺。如果你想返回liner的值,那么你必须返回它。 -
我在 name 函数中返回了
liner,但字符串仍然没有显示在客户端。 @昆汀
标签: javascript node.js