基于the tutorials我尝试通过HapiJS在NodeJS中设置基本服务器。
初始化如下所示:
Decoder
这是app.js的内容:
//globals
mainAddr = "MoriMachine";
mainPort = 3000;
require('./backend/app.js')
虽然index.html同样很小:
const Hapi = require('hapi');
const server = new Hapi.Server();
server.connection({host: mainAddr, port: mainPort });
server.register(require('inert'), (err) => {
if (err) { throw err; }
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
reply.file('./public/index/index.html');
}
});
});
server.start((err) => {
if (err) { throw err; }
console.log(`Server running at: ${server.info.uri}`);
});
在项目本身中,有init.js和三个文件夹:
问题在于,无论我尝试什么路径,当我运行服务器时,都没有找到JS或图片。
是什么原因?我错过了添加一些额外的功能?
答案 0 :(得分:1)
原因是您只有一条路由服务于一个特定文件。当您访问路线'/'时,您的浏览器会尝试访问'/index.js'和'/test.jpg'而您没有回应这些路线。
一种方法是提供公共目录中的所有内容,如下所示:
server.route({
method: 'GET',
path: '/{param*}',
handler: {
directory: {
path: 'public'
}
}
});
现在您的index.js可通过/index/index.js访问,您的图片可通过/index/test.jpg访问
所以对你的html进行这些更改
<!DOCTYPE html>
<html>
<head>
<script src="/index/index.js"></script>
</head>
<body>
<h1>HELLO WORLD!! -3-</h1>
<img src="/index/test.jpg"></img>
</body>
</html>
请注意,通过这种方式,您的index.html也可通过/index/index.html
访问更多详情请看:http://hapijs.com/tutorials/serving-files?lang=en_US#directory-handler