Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的变量没有在node.js中更新?_Javascript_Node.js_Embedded Javascript - Fatal编程技术网

Javascript 为什么我的变量没有在node.js中更新?

Javascript 为什么我的变量没有在node.js中更新?,javascript,node.js,embedded-javascript,Javascript,Node.js,Embedded Javascript,我已经用node.js构建了一个webapp,通过POST请求接收来自SNS主题的消息,并将它们记录到控制台,然后将它们显示在网页上。如果我发布消息到我的主题,我会在控制台中打印消息,但网页上没有更新 这是我的app.js const express = require("express"); const request = require('request') const bodyParser = require('body-parser') const app = express(); ap

我已经用node.js构建了一个webapp,通过POST请求接收来自SNS主题的消息,并将它们记录到控制台,然后将它们显示在网页上。如果我发布消息到我的主题,我会在控制台中打印消息,但网页上没有更新

这是我的
app.js

const express = require("express");
const request = require('request')
const bodyParser = require('body-parser')
const app = express();
app.use(express.static('public'));
app.set("view engine", "ejs")


app.get('/', function (req, res) {
  let subject = "Your Subject Will Appear Here";
  let message = "Your Message Will Appear Here";
  res.render("index", {subject:subject, message:message});
})

app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

app.post('/', (req, res) => {
  let body = ''
  req.on('data', (chunk) => {
    body += chunk.toString()
  })  
  req.on('end', () => {
    let payload = JSON.parse(body)
    if (payload.Type === 'Notification') {
      console.log(payload.Message);
      let subject = payload.Subject;
      let message = payload.Message;
      res.render("index", {subject:subject, message:message});
    }
  });
});

app.listen(80, process.env.IP, function(request, response){
    console.log("## SERVER STARTED ##");
});

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>title</title>
    <link rel="stylesheet" type="text/css" href="/css/style.css">
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:300' rel='stylesheet' type='text/css'>
  </head>
  <body>
    <div class="container">
      <fieldset>
        <% if(subject !== null){ %>
            <p>SNS Subject: <%= subject %></p>
          <% } %>
        <% if(message !== null){ %>
            <p>SNS Message: <%= message %></p>
          <% } %>
      </fieldset>
    </div>
  </body>
</html>
这是我的
index.js的代码

const express = require("express");
const request = require('request')
const bodyParser = require('body-parser')
const app = express();
app.use(express.static('public'));
app.set("view engine", "ejs")


app.get('/', function (req, res) {
  let subject = "Your Subject Will Appear Here";
  let message = "Your Message Will Appear Here";
  res.render("index", {subject:subject, message:message});
})

app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

app.post('/', (req, res) => {
  let body = ''
  req.on('data', (chunk) => {
    body += chunk.toString()
  })  
  req.on('end', () => {
    let payload = JSON.parse(body)
    if (payload.Type === 'Notification') {
      console.log(payload.Message);
      let subject = payload.Subject;
      let message = payload.Message;
      res.render("index", {subject:subject, message:message});
    }
  });
});

app.listen(80, process.env.IP, function(request, response){
    console.log("## SERVER STARTED ##");
});

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>title</title>
    <link rel="stylesheet" type="text/css" href="/css/style.css">
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:300' rel='stylesheet' type='text/css'>
  </head>
  <body>
    <div class="container">
      <fieldset>
        <% if(subject !== null){ %>
            <p>SNS Subject: <%= subject %></p>
          <% } %>
        <% if(message !== null){ %>
            <p>SNS Message: <%= message %></p>
          <% } %>
      </fieldset>
    </div>
  </body>
</html>

标题
SNS主题:

SNS消息:


因为您的变量是
get
post
回调函数中的local变量。如果希望它们在这些回调的作用域之外持久存在,则需要将它们移动到回调返回时不会消失的作用域

例如,这使得他们可以使用模块globals,但是对于每个帖子来说,不管它来自谁,更改不相关get的内容似乎都很奇怪(请参见
***
注释):

//***在模块范围内声明
let subject=“您的主题将出现在此处”;
let message=“您的消息将显示在此处”;
app.get('/',函数(req,res){
//***此处未声明
res.render(“索引”{subject:subject,message:message});
})
// ...
应用程序发布(“/”,(请求,回复)=>{
让body=''
请求on('数据',(块)=>{
body+=chunk.toString()
})  
请求开启('end',()=>{
让payload=JSON.parse(body)
如果(payload.Type===‘通知’){
console.log(payload.Message);

subject=payload.subject;//谢谢!这很有意义,我最近才开始使用来自Python的NodeJ,我甚至没有考虑范围!