2017-07-25 7 views
0

私はTypeScriptを使用してwebappを作成しようとしています。私はapp.jsファイルをサーバーに作成していますが、私が定義しているルートは決してヒットしません。代わりに、プロジェクトのルートにあるサーバー上のファイルが表示されます。TypeScriptとExpressを使用すると、ビューはレンダリングされません。代わりにサーバーファイルが表示されます

ここに私のコードです。

//app.ts 
import * as express from 'express'; 
import * as http from 'http-server'; 

let app = express(); 

app.set('port', 443); 
app.set('views', './views'); 
app.set('view engine', 'jade'); 

app.get('/', function(req: any, res: any) { 
    // This code is never reached on 'GET /' requests. 
    res.render('index'); 
}); 

app.use(function(req: any, res: any, next: any) {}); 
app.use(function(err, req, res, next) {}); 

http.createServer().listen(app.get('port')); 

console.log("Listening..."); 

私がlocalhost:443に行ったとき、私は以下の画像に出会った。私も、私はこの構成から抜け出すことができるより多くのあるデバッガで文字列としてレンダリングされたHTMLを見ることapp.render()呼び出しを行うことができるんだけど、コードをいじりで

showing server files instead of rendering

まだapp.render('index');を呼び出すだけでは、実際に何もレンダリングされません。以下のサンプル。

app.render('index', function(err: Error, html: string) { 
    console.log(html); // Outputs the rendered view, but it is not rendered on the page. 
}); 

あなたはどう思いますか?

答えて

1

。あなたはこの

http.createServer(app).listen(app.get('port')); 

それとも

app.listen(app.get('port')) 

を行う必要があり

は、基本的には、任意のハンドラせずにサーバーと呼ばれるので、メインスクリプトのディレクトリを示しています。

エクスプレスインスタンスを作成しましたが、httpサーバーに追加されていません。

+0

TypeScriptでは、http-serverパッケージは 'http.createServer(app?)'のみ 'http.createServer(Options?| undefined);'をサポートしていないため、これを使用できませんでした。しかし、あなたの2番目の解決策は、そのトリックでした。ありがとうございました! – James

0

ロードしようとしているビューのディレクトリは、相対パスではなくフルパスである必要があります。試してみてください:あなたがサーバーとして明示インスタンスを使用していない

app.set('views', path.join(__dirname, 'views'));

関連する問題