2016-10-20 3 views
0

На основании the tutorials Я попытался настроить базовый сервер в NodeJS через HapiJS.Невозможно прикрепить любой файл к HTML

инициализации выглядит следующим образом:

//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
  • общественности: содержит «индекс» папку, содержащую HTML и JS и картина, которую я попытался прикрепить.

Проблема в том, что любой путь, который я пытаюсь выполнить при запуске сервера, не обнаружен ни JS, ни картинка.

В чем причина? Мне не хватает дополнительных функций?

+1

Вам необходимо обслуживать статические файлы с вашего сервера. Взгляните на этот документ: http://hapijs.com/tutorials/serving-files – Sharko

+0

@ Sharko ouch, это возможно. Это не первый раз, когда я путаю backend & frontend. –

ответ

1

Причина в том, что у вас есть только один маршрут, который обслуживает один конкретный файл. Когда вы получаете доступ к маршруту «/», ваш браузер пытается получить доступ к «/index.js» и «/test.jpg», и вы не отвечаете на эти маршруты.

Один из способов сделать это, чтобы служить все, что в общедоступном каталоге, например:

server.route({ 
    method: 'GET', 
    path: '/{param*}', 
    handler: { 
     directory: { 
      path: 'public' 
     } 
    } 
}); 

Теперь ваш index.js доступен корыто /index/index.js и ваш образ доступен корыто/индекс /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

+0

Он работает! Мне уже было интересно, что причина должна быть подобна этой, но была совершенно неуверенной. Спасибо, это избавило меня от разочарования! –

Смежные вопросы