无法将任何文件附加到 HTML
Unable to attach any file to an HTML
基于the tutorials,我尝试通过 HapiJS 在 NodeJS 中设置一个基本服务器。
初始化看起来像这样:
//globals
mainAddr = "MoriMachine";
mainPort = 3000;
require('./backend/app.js')
这是app.js的内容:
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}`);
});
而 index.html 同样小:
<!DOCTYPE html>
<html>
<head>
<script src="index.js"></script>
</head>
<body>
<h1>HELLO WORLD!! -3-</h1>
<img src="test.jpg"></img>
</body>
</html>
在项目本身中,有init.js和三个文件夹:
- node_modules:原因显而易见
- 后端:包含app.js
- public:包含文件夹 'index',其中包含 HTML,以及我尝试附加的 JS 和图片。
问题是无论我尝试什么路径,当我运行服务器时,JS和图片都找不到。
这是什么原因?我想添加一些额外的功能吗?
原因是您只有一个服务于一个特定文件的路由。当您访问路由“/”时,您的浏览器会尝试访问“/index.js”和“/test.jpg”,但您没有响应这些路由。
一种方法是提供 public 目录中的所有内容,如下所示:
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
基于the tutorials,我尝试通过 HapiJS 在 NodeJS 中设置一个基本服务器。
初始化看起来像这样:
//globals
mainAddr = "MoriMachine";
mainPort = 3000;
require('./backend/app.js')
这是app.js的内容:
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}`);
});
而 index.html 同样小:
<!DOCTYPE html>
<html>
<head>
<script src="index.js"></script>
</head>
<body>
<h1>HELLO WORLD!! -3-</h1>
<img src="test.jpg"></img>
</body>
</html>
在项目本身中,有init.js和三个文件夹:
- node_modules:原因显而易见
- 后端:包含app.js
- public:包含文件夹 'index',其中包含 HTML,以及我尝试附加的 JS 和图片。
问题是无论我尝试什么路径,当我运行服务器时,JS和图片都找不到。
这是什么原因?我想添加一些额外的功能吗?
原因是您只有一个服务于一个特定文件的路由。当您访问路由“/”时,您的浏览器会尝试访问“/index.js”和“/test.jpg”,但您没有响应这些路由。
一种方法是提供 public 目录中的所有内容,如下所示:
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