res.sendFile不是Node.js函数

jLy*_*ynx 6 javascript iis node.js

我无法使用node.js发送HTML文件

所以首先这是我得到的错误

Application has thrown an uncaught exception and is terminated:
TypeError: res.sendFile is not a function
    at Server.<anonymous> (C:\Program Files\iisnode\www\test\app.js:4:6)
    at emitTwo (events.js:88:13)
    at Server.emit (events.js:173:7)
    at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:529:12)
    at HTTPParser.parserOnHeadersComplete (_http_common.js:89:23)
Run Code Online (Sandbox Code Playgroud)

我的app.js代码是

var http = require('http');

http.createServer(function (req, res) {
    res.sendFile('test.html', { root: __dirname });
}).listen(process.env.PORT);  
Run Code Online (Sandbox Code Playgroud)

如果我遗漏了一些简单的东西,我很抱歉,因为这是我制作的第一个node.js程序

小智 22

这个具体问题已经得到解答,但值得一提的是,如果您使用的是"快速"版本3.x,修复程序可以像切换res.sendFile('path-to-file');res.sendfile('path-to-file');

这是我的问题.因此,您可以升级快速版本(或)更改小写的方法名称以解决此问题.


Toa*_*ien 11

sendFile仅在Express模块​​中.

试试这个代码

 var express = require('express');
 var app = express();
 app.get('/', function(req, res) {
     res.sendFile('path-to-file');
 });
 app.listen(PORT);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这不起作用_until_您安装了Express. (3认同)

Fis*_*ing 7

借助 Toanalien 的(正确)答案,您可以通过以下方式完成相同的操作:

var http = require('http');
var fs = require('fs');
var path = require('path');

http.createServer(function (req, res) {
  // maybe test for existence here using fs.stat

  res.writeHead(200, {"Content-Type": "text/html"});

  fs.createReadStream(path.resolve(__dirname, 'test.html')) 
    .pipe(res);

}).listen(process.env.PORT || '3000'); // provide a default  
Run Code Online (Sandbox Code Playgroud)

请参阅http.ServerResponsefs.createReadStream


小智 5

我有同样的问题,这对我有用。希望它能起作用。

 function(req,res){};
Run Code Online (Sandbox Code Playgroud)
  • 第一个参数应该是“req”*