为什么“ /”在node.js中不提供index.html?

用户名

我正在尝试编写一个返回主页的函数index.html但是,当我删除行时

requestpath += options.index

我收到以下错误:

500: encountered error while processing GET of "/"

没有那条线,请求不应该localhost:3000/,应该服务index.html吗?

我猜想它fs.exist到底功能有关,但我不确定。

var return_index = function (request, response, requestpath) {
    var exists_callback = function (file_exists) {
        if (file_exists) {
            return serve_file(request, response, requestpath);
        } else {
            return respond(request, response, 404);
        }
    }
    if (requestpath.substr(-1) !== '/') {
        requestpath += "/";
    }
    requestpath += options.index;
    return fs.exists(requestpath, exists_callback);
}

options 等于

{
    host: "localhost",
    port: 8080,
    index: "index.html",
    docroot: "."
}
罗伊斯

fs.exists检查文件系统中是否存在文件。由于requestpath += options.index更改//index.html,如果没有它将fs.exists找不到文件。/是目录,而不是文件,因此是错误。)

由于localhost:3000/应该起作用,这似乎令人困惑index.html在网络上,/是的简写index.html(除非您将默认文件设置为其他文件)。当您要求时/,文件系统将查找index.html为文件系统提供服务。

我会将您的代码更改为:

var getIndex = function (req, res, path)  {    
    if (path.slice(-1) !== "/")
        path += "/";
    path += options.index;
    return fs.exists(path, function (file) {
        return file ? serve_file(req, res, path) : respond(req, res, 404);
    });
}

尝试使回调匿名化,除非您知道要在其他地方使用它们。上面的exists_callback代码仅会使用一次,因此请保存一些代码并将其作为匿名函数传递。另外,在node.js中,您应该使用camelCase而不是下划线,例如getIndexover return_index

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么“ /”在node.js中不提供index.html?

来自分类Dev

Node.js 不提供 index.html 以外的文件

来自分类Dev

服务Node.js应用程序时,为什么SimpleHTTPServer不提供wav文件?

来自分类Dev

为什么仅指定root index.html时,node.js会发送整个公用文件夹?

来自分类Dev

为什么node.js需要python

来自分类Dev

为什么将node js用于cordova?

来自分类Dev

为什么 Angular 需要 Node.js?

来自分类Dev

ExpressJs不提供index.html

来自分类Dev

为什么“打印”在node.js中不起作用?

来自分类Dev

为什么在node.js中JSON比BSON更快?

来自分类Dev

为什么函数最终在Node JS中执行

来自分类Dev

为什么“打印”在node.js中不起作用?

来自分类Dev

为什么在 node.js 中 `func` 不是函数?

来自分类Dev

为什么不提供多定义错误?

来自分类Dev

Django-为什么不提供图片

来自分类Dev

为什么Spring @Retryable不提供重试?

来自分类Dev

为什么不提供任何参数

来自分类Dev

为什么node.js转换POST正文?

来自分类Dev

为什么从Node.js连接到MongoDB很慢

来自分类Dev

cron为什么不执行我的node.js脚本?

来自分类Dev

为什么Heroku无法检测到Node.js buildpack?

来自分类Dev

为什么node.js不加载我需要的模块?

来自分类Dev

为什么node.js比Apache 2.4慢得多

来自分类Dev

为什么以这种方式执行Node.js?

来自分类Dev

为什么有4个版本的Node JS?

来自分类Dev

为什么要使用同步功能node.js

来自分类Dev

为什么Node.js + Express不会因错误而崩溃?

来自分类Dev

为什么Node JS阻止异步文件操作?

来自分类Dev

node.js节点命令为什么不起作用?