Ich habe eine Reihe von Seiten basierend auf dem Polymer-Starter-Kit, die gut mit polymer serve
funktionieren. Allerdings muss ich einige Ajax-Anfragen über einen Server für Datenbankabfragen senden, so dass ich meinen eigenen Server-Code mit express.js schreiben musste. Mein Problem ist, dass, wenn ich eine Seite, die nicht root ist und aktualisieren, ich die Nachricht oder was auch immer die/Seite Name ist. Meine index.html Seite verweist auf eine container.html als normal, den app-Route-Code hat, wie folgt:Serving Polymer app-geroutete Seiten mit express.js?
<app-location route="{{route}}"></app-location>
<app-route
route="{{route}}"
pattern="/:page"
data="{{routeData}}"
tail="{{subroute}}"></app-route>
...
<app-drawer id="drawer">
<app-toolbar>Menu</app-toolbar>
<iron-selector selected="[[page]]" attr-for-selected="name" class="drawer-list" role="navigation">
<a name="view-1" href="/view-1">View One</a>
<a name="bugs" href="/bugs">Bugs</a>
</iron-selector>
</app-drawer>
...
<iron-pages
selected="[[page]]"
attr-for-selected="name"
fallback-selection="view-404"
role="main">
<view-1 name="view-1"></view-1>
<bugs-view name="bugs"></bugs-view>
</iron-pages>
Mit anderen Worten, es ist fast genau die gleiche wie in dem Standard-Polymer-Starter-Kit. Mein Server-Code lautet wie folgt:
var express = require('express');
var path = require('path');
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'host',
user : user,
password : password,
database : 'db'
});
connection.connect();
var app = express();
app.get('/sql', function(req,res) {
//console.log(req.query.query);
connection.query(req.query.query, function(error, results, fields) {
if (error) {console.log(error); throw error;}
else {
res.send(results);
}
}.bind(this));
});
app.use(express.static(__dirname));
app.use(express.static(__dirname+'/src'));
app.listen(8080);
console.log("Server listening on localhost:8080");
I localhost:8080
fein laden kann, und navigieren Sie zu den Seiten ganz gut, aber wenn ich versuche, auf jeder Seite zu aktualisieren, aber root es gibt mir die Cannot GET /page
Fehler. Dies hat die Entwicklung machte eine intensiv frustrierende Erfahrung ...
Ich habe 'res.sendFile (" index.html ")' da server.js lebt im selben Verzeichnis wie meine index.html. Jetzt bekomme ich 'TypeError: path muss absolut sein oder root to res.sendFile 'angeben, wenn ich versuche, eine Seite zu laden. – IronWaffleMan
Machen Sie Ihre 'index.html' zu'./Index.html'. Damit meine ich, dass Sie res.sendFile ("./ index.html") haben sollten. – Pytth
Ich bekomme immer noch den gleichen Fehler, sogar mit './Index.html'. Ich habe versucht 'res.sendFile (" ./ index.html ", {root: __dirname});' stattdessen; das beseitigt den Fehler, aber ich bekomme leere Seiten; nichts wird geladen. Mit Blick auf die chrome dev tools ist meine 'container.html' Seite identisch mit meiner' index.html' Seite, da diese als Antwort auf die '/ src/container.html' Anfrage kommt (ich logge die' req 'Parameter). – IronWaffleMan