2017-01-03 5 views
2

Итак, у меня есть небольшая проблема. Вот мой server.jsVue-ресурс не может загрузить экспресс-статический файл

require('dotenv').load(); 
const http = require('http'); 
const path = require('path'); 
const express = require('express'); 

const app = express(); 



const server = http.createServer(app).listen(8080,() => { 
    console.log('Foliage started on port 8080'); 
}); 

app.use(express.static(path.join(__dirname, '/public'))); 

app.get('/', (req, res) => { 
    res.sendFile(path.join(__dirname, 'index.html')); 
}); 

app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname, 'index.html')); 
}); 

Что это делает, является то, что для каждого /whatever дает файл index.html. Наряду с этим, он служит статические файлы из /public Теперь мой index.html выглядит следующим образом:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Foliage</title> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
     <link rel="stylesheet" href="css/foliage.css" media="screen" title="no title"> 
     <script src="https://use.fontawesome.com/763cbc8ede.js"></script> 
    </head> 
    <body> 
     <div id="app"> 
      <router-view :key="$router.currentRoute.path"></router-view> 
     </div> 
     <script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script> 
     <script src="js/md5.js"></script> 
     <script src="js/cookies.js"></script> 
     <script src="js/dragula.js"></script> 
     <script src="js/build.js"></script> 

    </body> 
</html> 

Все файлы JS и файлы стилей загружаются надлежащим образом из public/js и public/css для этого. Однако в build.js, который является приложением vuejs для webpack-ed, я использую vue-resource для загрузки в другой файл с public/themes/Bareren/templates. Это выглядит так

page = {}; 
page.Template = "Index"; 
this.$http.get('themes/Barren/templates/'+page.Template+'.html').then((response) => { 
     console.log(response.body); 
}); 

Однако этот запрос не дает мне файл в public/themes/Barren/templates. Вместо этого он возвращает собственный файл index.html сайта. Как я могу это исправить?

ответ

0

app.use (express.static (путь.join (__ dirname, '/ public')));

app.get ('/', (req, res) => { res.sendFile (путь.join (__ dirname, 'index.html'));});

app.get ('*', (req, res) => { res.sendFile (путь.join (__ dirname, 'index.html'));});

Попробуйте console.log (path.join (__ имя_директории '/ общественность')) и console.log (path.join (__ имя_директории, 'index.html'), чтобы увидеть, если соответствует пути, что вы ожидая.

это. $ http.get ('темы/Бесплодный/шаблоны /' + page.Template + 'HTML'). затем ((ответ) => { console.log (response.body);});

Вы также можете попробовать консоль регистрации вашего запроса на получение. Обычно мне нужно играть с путями, чтобы убедиться, что я обслуживаю t он исправляет файлы.

1

Одна вещь, которую вы можете попробовать, это определить маршрут GET, который отвечает шаблоном до подстановочный знак внизу.

app.get('/themes', (req, res) => { 
    // get the theme name 
    res.sendFile(path.join(__dirname, ...)); 
}); 

app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname, 'index.html')); 
}); 

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

  • Нет связанных вопросов^_^