polymer serve
でうまく動作するPolymerスターターキットに基づいたページがたくさんあります。しかし、データベース照会のためにサーバー経由でいくつかのAjaxリクエストを送信する必要があるため、express.jsで自分のサーバーコードを作成する必要がありました。私の問題は、私がルートではなく、リフレッシュしているページを入力するたびに、メッセージCannot GET /bugs
またはページ名が何であっても取得するということです。私のindex.htmlページ参照以下のようにアプリ - 経路コードを持って、通常のようにcontainer.html、:つまり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>
が、それはほぼ正確にデフォルトポリマースターターキットと同じです。次のように私のサーバーのコードは次のとおりです。
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");
私はlocalhost:8080
罰金をロードし、うまくページに移動することができますが、私はすべてのページが、ルート上でリフレッシュしてみたときに、それは私にCannot GET /page
エラーになります。あなたのすべての後にこのを入れて、あなたのindex.html
のパスを入れ、
app.get('*', function(req, res) {
res.sendfile('./public/index.html', {root: '.'});
});
代わりの./public/index.html
:これは...激しくイライラする経験、サーバーの設定にこれを追加すること
server.jsは私のindex.htmlと同じディレクトリにあるので、 'res.sendFile(" index.html ")'を入れます。ページをロードしようとすると、 'TypeError:パスは絶対パスでなければなりません。または、res.sendFile'ルートを指定する必要があります。 – IronWaffleMan
'index.html'を'。/ index.html'にしてください。これにより、 'res.sendFile(" ./index.html ")' – Pytth
があるはずです。 '。/ index.html'でも同じエラーが発生します。代わりに 'res.sendFile(" ./ index.html "、{root:__dirname});'を実行しようとしました。これはエラーを取り除きますが、私は空白のページを取得します。何もロードされていません。 chromeの開発ツールを見ると、私の 'container.html'ページは'/src/container.html'リクエストに応答しているので、私の 'index.html'ページと同じです(' req 'パラメータ)。 – IronWaffleMan