Node.js 带有节点js的服务器-客户端示例

Node.js 带有节点js的服务器-客户端示例,node.js,client-server,Node.js,Client Server,我开始使用node.js,但在客户端如何与node js服务器对话方面,我缺少一些基本的东西。 以下是我试图做的: 我有server.js,我正在使用它运行 node server.js server.js: console.log('Server-side code running'); const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send

我开始使用node.js,但在客户端如何与node js服务器对话方面,我缺少一些基本的东西。 以下是我试图做的:

  • 我有server.js,我正在使用它运行 node server.js
  • server.js:

    console.log('Server-side code running');
    const express = require('express');
    const app = express();
    
    app.get('/', (req, res) => {
        res.send('test');
    });
    // start the express web server listening on 8080
    app.listen(8080, () => {
      console.log('listening on 8080');
    });
    
  • client.js:
  • 然后将client.js加载到html中:
  • 
    我的客户端页面用于侦听节点js服务器
    
    在浏览器日志(我在该机器上运行apache)中,我得到: Uncaught(in promise)SyntaxError:JSON.parse:JSON数据第1行第1列的意外字符

    我不清楚如何将内容从服务器传递到客户端(字符串只是用来简化应用程序)。谢谢你的帮助。
    伊万。

    您向客户请求的地址不正确。请试试这个:

    fetch('http://localhost:8080', {method:'GET'})
      .then(function(response){
        if (response.ok) console.log(response.status);
      });
    
    编辑:这是我的server.js。我添加了一个附加的中间件,正如您在评论中提到的

    console.log("Server-side code running");
    const express = require("express");
    const app = express();
    
    app.use(function (req, res, next) {
      res.setHeader("Access-Control-Allow-Origin", "localhost:8080");
      res.setHeader(
        "Access-Control-Allow-Methods",
        "GET, POST, OPTIONS, PUT, PATCH, DELETE"
      );
      res.setHeader(
        "Access-Control-Allow-Headers",
        "X-Requested-With,content-type"
      );
      res.setHeader("Access-Control-Allow-Credentials", true);
      next();
    });
    
    app.get("/", (req, res) => {
      res.send("test");
    });
    
    // start the express web server listening on 8080
    app.listen(8080, () => {
      console.log("listening on 8080");
    });
    
    当我从client.js发送请求时,这就是终端:

    PS C:\Users\murat\OneDrive\Masaüstü\Tutorial\test> node client
    200
    

    嗨,Ivan,我想你忘了在
    server.js
    文件中指定express应该去哪里寻找javascript来为它们服务。请看一看,并让我知道这是否对您有帮助:)谢谢,我添加了:app.use(express.static('/'))我的文件位于服务器运行的同一目录中,但这不会改变任何内容,我仍然会收到相同的错误。好的,谢谢。现在发生以下错误:跨源请求被阻止:同一源策略不允许读取远程资源。(原因:CORS请求未成功)。未捕获(承诺中)类型错误:尝试获取资源时出现NetworkError。更新:上述错误发生在firefox中,在其他浏览器(internet explorer)中我获取:client.js:1 get net::ERR_CONNECTION_拒绝(匿名)@client.js:1 test client.html:1未捕获(承诺中)类型错误:未能获取承诺。然后(异步)(匿名)在服务器端还添加了:app.use(函数(req,res,next){res.setHeader('Access-Control-Allow-Origin',');res.setHeader('Access-Control-Allow-Methods','GET,POST,OPTIONS,PUT,PATCH,DELETE');res.setHeader('Access-Control-Allow-Headers','X-request-With,content-type');res.setHeader('Access-Control-Allow-Credentials',true);next();});很奇怪,我没有收到任何错误?您是否使用其他设置?如果需要,请编辑您的问题,我可以检查。
    console.log("Server-side code running");
    const express = require("express");
    const app = express();
    
    app.use(function (req, res, next) {
      res.setHeader("Access-Control-Allow-Origin", "localhost:8080");
      res.setHeader(
        "Access-Control-Allow-Methods",
        "GET, POST, OPTIONS, PUT, PATCH, DELETE"
      );
      res.setHeader(
        "Access-Control-Allow-Headers",
        "X-Requested-With,content-type"
      );
      res.setHeader("Access-Control-Allow-Credentials", true);
      next();
    });
    
    app.get("/", (req, res) => {
      res.send("test");
    });
    
    // start the express web server listening on 8080
    app.listen(8080, () => {
      console.log("listening on 8080");
    });
    
    PS C:\Users\murat\OneDrive\Masaüstü\Tutorial\test> node client
    200