2016-10-12 11 views
1

私はExpressJSを使用して静的なプログレッシブWebアプリケーションをホストしようとしていますが、NodeJSとExpressJSを使用して静的プログレッシブWebアプリケーション(PWA)をホストする

私はExpressJSをルーティングに使用する方法に関する素晴らしい記事をいくつか見つけましたが(下のリンクを参照)、私の問題解決には役立っていません。これらのチュートリアルは非常に基本的なものであり、より高度なチュートリアルを見つけることはできません。皆さんが知っている場合は、このスレッドに返信してリンクしてください!

https://www.tutorialspoint.com/nodejs/nodejs_express_framework.htm 
https://stormpath.com/blog/build-nodejs-express-stormpath-app 
https://zellwk.com/blog/crud-express-mongodb/ 
https://www.codementor.io/nodejs/tutorial/build-website-from-scratch-using-expressjs-and-bootstrap 

マイフォルダ構造は次のようになります。

node_modules 
package.json 
server.js 
index.html 
sw.js (service worker) 
public/ 
    js/ 
     index.js 
    style/ 
     index.css 

と私のserver.jsは次のようになります。私は私の公開/スタイル/ロードしています私のindex.htmlで

var express = require('express'); 
var app = express(); 

// Initialize static content 
app.use(express.static('public')); 

app.get('/index.html', function(req, res) { 
    res.sendFile(__dirname + '/index.html'); 
}); 
app.listen(8887); 

index.css stylesheetとpublic/js/index.jsのようなjavascript:

<link rel="stylesheet" href="public/style/index.css"> 
<script src="public/js/index.js"></script> 

「node server.js」コマンドを使用してアプリケーションをホストし、http://localhost:8887/index.htmlに移動すると、正しいindex.htmlファイルが配信されますが、index.cssファイルは配信されません。ここで

は私の問題です:

  1. 私のスタイルシートが正しく提供されていない(index.htmlの任意のCSSなし をレンダリング)
  2. ブラウザは、サービスワーカー(sw.jsを拾っていません)

編集:ときに、サービスワーカー負荷パブリック/フォルダにsw.jsを移動するには、エラーが発生します。http://localhost:8887/sw.jsネット:: ERR_INVALID_RESPONSEをGET。

編集2:その他のサービスワーカー・エラー:More service worker errors

+0

スクリプトのsrcとlink hrefから 'public'を削除します。もう一つのことは、index.jsが見つからないのですか?あなたはindex.jsonを意味しましたか? – Roberto14

+0

申し訳ありません、あなたが正しいです - index.jsonは私の一部のtypoであり、index.jsであるはずでした。私のスクリプトからpublicを削除すると、スクリプトの読み込みの問題は修正されますが、サービスワーカーの問題は修正されません – Antag

答えて

1

私はそのような特急静的登録することをお勧め:

var path = require('path'); 
app.use(express.static(path.join(__dirname, 'public'))); 

をしてから、そのようなあなたのスクリプトを参照します。

<link rel="stylesheet" href="/style/index.css"> 
<script src="/js/index.js"></script> 

サービスワーカーは何をしていますか?

+0

/public/workedのない「/style/index.css」のようなスクリプトを参照してくれてありがとう!私のサービスワーカーは、これらのリソース(cssスクリプトとjavascriptスクリプト)といくつかのプッシュ通知をキャッシュしています。サービスワーカーはまだ拾われていません。 – Antag

+0

@Antagサービスワーカーをどのように起動しますか?可能であれば、ノード担当者がお手伝いします:https://github.com/strongloop/node-foreman –

+0

サービスワーカーは非常に新しい技術であり、他のファイルとは大きく異なる働きをします。私は間違っているかもしれませんが、私は、サービスワーカーがブラウザをサポートしているブラウザが、すべてのURLへのリクエストを実行すると、そのURLのルートドメインからサービスワーカーもリクエストすると信じています。サービスワーカーの[here](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers) – Antag

関連する問題