これは私が持っているものです。ファイル名「default.htm」は実際に存在し、NodeJSでreadFileを実行するとロードされます。
var express = require('express');
var app = express();
app.use(express.static(__dirname + '/default.htm'));
app.listen(process.env.PORT);
エラー(ブラウザ内):
Cannot GET /
通常、テンプレートは次のようにレンダリングします。
app.get('/', function(req, res){
res.render('index.ejs');
});
ただし、静的コンテンツを配信することもできます。そのためには、次を使用します。
app.use(express.static(__dirname + '/public'));
これで、プロジェクトのディレクトリ内のすべてが/public
静的コンテンツとしてサイトのルートに配信されます。たとえばdefault.htm
、パブリック フォルダーに配置すると、/default.htm
詳細については、express APIとConnect Static ミドルウェアのドキュメントを参照してください。
ルート ルートを定義する必要があります。
app.get('/', function(req, res) {
// do something here.
});
ああ、あなたは内でファイルを指定することはできませんexpress.static
. ディレクトリである必要があります。それapp.get('/'....
に応じてそのファイルをレンダリングする責任があります。app/views/
Express の render メソッドを使用できますが、従来はフォルダー内のどこにビューがあるかを Express に伝えるいくつかの構成オプションを追加する必要があります。
私は同じ問題を抱えていたので、ここに私が思いついたものがあります。これは、実行したときにフォルダー構造がどのように見えるかですnode server.js
app/
index.html
server.js
パスを出力した後、パスがサーバーが実行されている場所で__dirname
あることに気付きました( )。__dirname
app/
したがって、あなたの質問に対する答えは次のとおりです。
ファイルserver.js
がレンダリングしようとしているファイルと同じフォルダーにある場合、
app.use(express.static(__dirname + '/default.htm'));
実際にあるはずです
app.use(express.static(__dirname));
元の構文を使用したいのは、次のようなフォルダー ツリーがある場合だけです。
app/
index.html
server.js
はディレクトリindex.html
内、 はルート ディレクトリ内 (つまり、ディレクトリと同じレベル) にあります。app/
server.js
app/
全体として、コードは次のようになります。
var express = require('express');
var app = express();
app.use(express.static(__dirname));
app.listen(process.env.PORT);
「/」の get メソッドはどこにありますか?
また、Express.First で静的 html を直接提供することはできません。まず、それを構成する必要があります。
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set("view options", {layout: false}); //This one does the trick for rendering static html
app.engine('html', require('ejs').renderFile);
app.use(app.router);
});
get メソッドを追加します。
app.get('/', function(req, res) {
res.render('default.htm');
});
index.html ファイルに return を追加する必要があります。
app.use(express.static(path.join(__dirname, 'build')));
app.get('*', function(req, res) {res.sendFile(path.join(__dirname + '/build/index.html')); });
質問で述べたのと同じ問題に直面していました。次の手順で問題が解決しました。
次の手順でnodejsパッケージリンクをアップグレードしました
NPM のキャッシュをクリアします。
npm cache clean -f
「n」という小さなヘルパーをインストールします
npm install -g n
次に、node.js Web サイトにアクセスし、最新の node js パッケージをダウンロードしてインストールすると、問題は解決しました。