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)
答案 0 :(得分:0)
将require
放在try ... catch
块中:
try
{
require('nonexistent');
console.log('success');
} catch(e)
{
console.log('failure',e);
}
但是,我认为您的方法可能非常非常危险。至少,您应该检查是否存在/
,..
等,以确保只允许实际加载的模块。