首页 文章

节点服务空白页面

提问于
浏览
2

我有一个index.html页面,其中包含:

d:\ GITProjects \代码实验室\完整\第一步\ index.html在

我试图通过节点执行D:\ GITProjects \ codelab \ complete \ step1 \ server.js文件:

“C:\ Program Files \ nodejs> node.exe D:\ GITProjects \ codelab \ complete \ step1 \ server.js”

Server.js代码:

var static = require('node-static');
var http = require('http');
var file = new (static.Server)("D:\GITProjects\codelab\complete\step1");
var app = http.createServer(function (req, res) {
  file.serve(req, res);
}).listen(2011);

当我去点击:http://localhost:2011/我看到空页 . 知道为什么吗?

控制台显示“http://localhost:2011/无法加载资源:服务器响应状态为404(未找到)”

1 回答

  • 0

    你需要在 req.addListener() 内保留 file.serve(req,res)

    var static = require('node-static');
    var http = require('http');
    var file = new (static.Server)("./");
    var app = http.createServer(function (req, res) {
    
    req.addListener('end',function(){   //   <--
      file.serve(req, res);
    }).resume()                         //   <-- 
    
    }).listen(2011);
    

    此外,你还有其他几个选择(如果你不想坚持使用 node-static

    Option-1: 使用 fs 模块读取文件并根据请求发送

    var http = require('http'),
        fs = require('fs');    
    fs.readFile('./index.html', function (err, html) {
        if (err) {
            throw err; 
        }       
        http.createServer(function(request, response) {  
            response.writeHeader(200, {"Content-Type": "text/html"});  
            response.write(html);  
            response.end();  
        }).listen(2011);
    });
    

    Option-2:
    使用像 express() 这样的Web应用程序框架 . 它提供了几个很好的功能来简化节点的功能 . 然后你可以为'/'定义一个特定的路线来发送你的 index.html

    var express= require('express')
    var app = express()
    
    app.get('/',function(req,res){
      res.sendFile('index.html',{ root:__dirname })
    })
    
    app.listen(2011)
    

    或直接提供您的静态资产:

    var express= require('express')
    var app = express()
    
    app.use(express.static(__dirname)); //this will make index.html available to every request
    
    app.listen(2011)
    

    __dirname 是当前正在执行的脚本所在的目录 . 由于 server.jsindex.html 处于同一级别, __dirname 将指向* D:\ GITProjects \ codelab \ complete \ step1 *

相关问题