2017-01-03 45 views
2

所以,我有点问题。这里是我的server.jsVue-resource无法加载快速静态文件

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/jspublic/css为此适当地加载。但是,在build.js中,这是一个webpack-ed vuejs应用程序,我使用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(path.join(__ dirname,'/ public'))); ('/',(req,res)=> { res.sendFile(path.join(__ dirname,'index.html'));}); ('*',(req,res)=> { res.sendFile(path.join(__ dirname,'index.html'));});

尝试CONSOLE.LOG(path.join(__目录名, '/公共'))和执行console.log(path.join(__目录名称 '的index.html'),看是否路径匹配你是什么期待。

此。$ http.get( '主题/巴伦/模板/' + page.Template + 'HTML')。然后加入((响应) => { 的console.log(response.body );});

你也可以尝试控制台记录你的请求通常我需要玩的路径,以确保我服务吨他正确的文件。

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')); 
});