2017-07-19 11 views
3

私はnode.jsとexpress.jsの新機能を使用しているため、構文に問題があると感じました。次のnode.jsコードがあります。express.js内のフォルダ間をリンクできません

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

app.set('port', process.env.PORT); 

app.use(express.static(path.join(__dirname, 'static'))); 
app.get('/', function(req,res){ 
    res.render("/public/index") 
}); 
app.get('/secure', function(req,res){ 
    res.render("/secure/index") 
}); 
var server = app.listen(app.get('port'), function(){ 
    var port = server.address().port; 

}); 

これは、公開ページにアクセスしようとするたびしかしページは「Internal Server Error」を投げ、私は完全に罰金セキュアなページにアクセスすることができます、なぜこれが?私のファイル構造は、

static 
-public 
--index.html 
-secure 
--index.html 

私は静的に公共のindex.htmlを上に移動した場合、それはしかし、私は上記のファイル構造を持っていることを好むだろう、正常に動作している私はこれを行うことができますとにかくありますか?ありがとう。

+1

私はそれがテンプレートのドライブのルートを調べていると思われます。試してみてください代わりに '。/ public/index'を使います。 – SamHH

答えて

0

yourdomain:yourport/でリクエストすると、expressはapp.get("/", ..)でリクエストを処理し、ハンドラがres.renderであることがわかります。したがって、この関数はview engineapp.get()の上に定義する必要があるため、エラーを返します。

提供されるファイルは、静的なHTMLファイルであるので、あなたはapp.get()ミドルウェアを削除することができます。あなたは既にstatic handling middlewareapp.use(express.static(path.join(__dirname, 'static')));

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

app.set('port', process.env.PORT); 

app.use(express.static(path.join(__dirname, 'static'))); 

var server = app.listen(app.get('port'), function() { 
    var port = server.address().port; 
}); 

はだからyourdomain:yourport/publicで要求を行う、publicページを取得する必要があります。一方、安全なページはyourdomain:yourport/secureにあります。

0

私は行かなければならなかった:あなたのディレクトリ構造と、この作業を取得するために

app.use(express.static(path.join(__dirname, 'static'))); 

app.get('/', function(req,res){ 
    res.render("public/index") 
}); 

+0

ありがとう、私はその正確な構文を試しましたが、それでも同じエラーが発生していますか? –

+0

Expressのどのバージョンがありますか、読み込んでいる正確なURLは何ですか? 私の場合は私の 'PORT'は8877であるので、私はロードだ:'ます。http:// localhostを:8877/'、これは静的/公共/ –

+0

4.13.4に私のページを与え、ロードされたURLを経由与えられていますクラウドファウンドリーhttps://test-nodejs-app.run.aws-usw02-pr.ice.predix.io/ –