Javascript 我收到一个引用错误:未定义html

Javascript 我收到一个引用错误:未定义html,javascript,json,node.js,npm,Javascript,Json,Node.js,Npm,我是Node.js新手,这是我第一次使用Node.js。当我尝试连接index.html文件时,我遇到了“ReferenceError:html未定义”错误。 这是我的index.js代码 var http = require('http'); var fs = require('fs'); var port = 3030; var host = '127.0.0.1'; fs.readFile('index.html', (err,html)=>{ if(err){

我是Node.js新手,这是我第一次使用Node.js。当我尝试连接index.html文件时,我遇到了“ReferenceError:html未定义”错误。 这是我的index.js代码

var http = require('http');
var fs = require('fs');
var port = 3030;
var host = '127.0.0.1';

fs.readFile('index.html', (err,html)=>{
    if(err){
        throw err;
    }
});

var server = http.createServer((req,res)=>{
    res.statusCode = 200;
    res.setHeader('Content-type','text/plain');
    res.write(html);
    res.end();
});

server.listen(port,host,() =>{
    console.log('Server started with port: '+port);
});
这是我的index.html代码

`<html>
    <body>
        <h1>Node JS</h1>
    </body>
</html>
如果有人能告诉我为什么会犯这个错误,我错过了什么,那就太好了。
谢谢

在node js中,您的服务器试图在从磁盘读取文件之前返回该文件。这是node js回调的基本性质

var server = http.createServer((req,res)=>{
    res.statusCode = 200;
    res.setHeader('Content-type','text/plain');
    fs.readFile('index.html', (err,html)=>{
    if(err){
        throw err;
    }
        res.write(html);
        res.end();
    });

});

您应该考虑到nodejs经常使用异步调用,您的代码也是如此

fs.readFile('index.html', (err,html)=>{
    if(err){
        throw err;
    }
  console.log(html);  // html works here
});

console.log(html);  // html is undefined here
这应该行得通

fs.readFile('index.html', (err,html)=>{
  if(err){
     throw err;
  }

  var server = http.createServer((req,res)=>{
    res.statusCode = 200;
    res.setHeader('Content-type','text/plain');
    res.write(html);
    res.end();
  });

  server.listen(port,host,() =>{
    console.log('Server started with port: '+port);
  });
});

另一方面,我不建议像这样编写服务器,除非出于学习目的。有现成的基于nodejs的框架,可以让编写一个好的web服务器省去很多麻烦,比如或

在服务器块的范围内没有定义html
html
变量在代码中没有定义。如果你只想发送字符串,请引用它-“html”请阅读。是的!我错过了。谢谢:)非常感谢。这帮了大忙!!
fs.readFile('index.html', (err,html)=>{
  if(err){
     throw err;
  }

  var server = http.createServer((req,res)=>{
    res.statusCode = 200;
    res.setHeader('Content-type','text/plain');
    res.write(html);
    res.end();
  });

  server.listen(port,host,() =>{
    console.log('Server started with port: '+port);
  });
});