node.js - 显示错误404 - 当需要的文件失败时

时间:2016-01-16 12:21:58

标签: node.js

node.js的新手不想使用
设计多页网站的框架 想法是获取url路径名并添加.js
延伸到它并要求它。

但是当路径名没有时会发生什么 对应于需要的有效.js文件?

node.js服务器崩溃。

问题是如何显示'错误404'?

var http = require('http');
var url = require('url');

var server=http.createServer(function(req,res){
    res.writeHead(200,{'Content-Type': 'text/html; charset=utf-8'});
        var pathname=url.parse(req.url).pathname;
    pathname = pathname.replace('-', '')
    var page = require(pathname + '.js')
    res.end(pathname + '.js included successfully')

}).listen(80);

我跑的时候

domain.tld/22

此脚本将显示

 " 22.js included successfully "

因为我确实有22.js

但是当我尝试

 domain.tld/23
整件事崩溃了。出现以下错误

module.js:339
    throw err;
    ^

    Error: Cannot find module '/23.js'
        at Function.Module._resolveFilename (module.js:337:15)
        at Function.Module._load (module.js:287:25)
        at Module.require (module.js:366:17)
        at require (module.js:385:17)
        at Server.<anonymous> (/test.js:8:13)
        at emitTwo (events.js:87:13)
        at Server.emit (events.js:172:7)
        at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:528:12)
        at HTTPParser.parserOnHeadersComplete (_http_common.js:88:23)

1 个答案:

答案 0 :(得分:0)

require放在try ... catch块中:

try
{
    require('nonexistent');
    console.log('success');
} catch(e)
{
    console.log('failure',e);
}

但是,我认为您的方法可能非常非常危险。至少,您应该检查是否存在/..等,以确保只允许实际加载的模块。