无法将任何文件附加到 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和三个文件夹:

问题是无论我尝试什么路径,当我运行服务器时,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