2017-01-03 5 views
2

Also, ich habe ein bisschen ein Problem. Hier ist mein server.jsVue-Ressource kann keine statische Datei laden

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

Was das bedeutet ist, dass für jeden /whatever es gibt die index.html Datei. Neben, dass dient es statische Dateien aus /public Nun sieht meine index.html wie folgt aus:

<!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> 

alle der JS-Dateien und die Style-Dateien werden in geeigneter Weise aus public/js und public/css für diese geladen. In build.js, die eine Webpack-ed vuejs App ist, verwende ich vue-resource, um eine andere Datei von zu laden. Das sieht dann so

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

Allerdings ist diese Anforderung nicht geben Sie mir die Datei in public/themes/Barren/templates. Stattdessen gibt es die eigene index.html-Datei zurück. Wie könnte ich das beheben?

Antwort

0

app.use (express.static (Pfad.join (__ dirname, '/ public')));

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

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

Versuchen Sie, console.log (path.join (__ dirname '/ public')) und console.log (path.join (__ dirname, 'index.html'), um zu sehen, ob der Pfad, was passt Sie erwartet.

dies. $ http.get ('Themen/Barren/templates /' + page.Template + '. html). dann ((Antwort) => { console.log (response.body);});

Sie auch Ihre Erhaltungs-Anforderungs-Konsole anmelden versuchen, kann in der Regel ich diene t ich muss sicherstellen, dass mit der Wegfindung spielen. Er korrigiert die Dateien.

1

Eine Sache, die Sie versuchen können, ist eine GET Route zu definieren, die mit Ihrer Vorlage vor der Platzhalter am unteren Rand antwortet.

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