2016-12-26 10 views
0

Express with Nodeを使用してアプリケーションを作成しました。これまでにget要求を出すと、ノード・サーバーからレンダリングされたhtmlファイルが返されます。 私は、ルートを使用してhtmlファイルをレンダリングしました。そして、get要求ごとにhtmlファイルを送信し続けます。GETリクエストがNodeおよびExpress Appでhtmlを返します

ノードアプリのコード

import express from 'express'; 
import mongoose from 'mongoose'; 
import bodyParser from 'body-parser'; 
import passport from 'passport'; 
import cros from 'cors'; 
import path from 'path'; 
import webpack from 'webpack'; 
import webpackmiddleware from 'webpack-dev-middleware'; 
import webpackHotMiddleware from 'webpack-hot-middleware'; 
import webpackConfig from '../webpack.config.dev'; 
import regusers from './models/regusers.model'; 
import Router from './routes/UserRouter'; 

const cross = cros(); 
const app = express(); 
const router = express.Router(); 
const port =3000; 
const compile=webpack(webpackConfig); 
const db='mongodb://localhost/parkspace'; 

mongoose.Promise = global.Promise; 

mongoose.connect(db); 

app.use(webpackmiddleware(compile,{ 
    hot:true, 
    publicPath: webpackConfig.output.publicPath, 
    noInfo:true 
})); 

app.use(webpackHotMiddleware(compile)); 
app.use(cross); 
app.use(router); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ 
    extended:true 
})); 

app.get('/*',(req,res) => { 
    res.sendFile(path.join(__dirname,'./index.html')); 
}); 

Router(app); 

app.listen(port,()=> console.log('Running on port: '+port)); 

私のルーターはこれを克服する方法

import Authentication from '../auth/auth'; 
import passportService from '../services/passport'; 
import passport from 'passport'; 

const requireAuth = passport.authenticate('jwt',{session:false}); 

const user = (app) => { 

    app.get('/',requireAuth,function (req,res){ 
     res.send({hi:'there'}); 
    }); 

    app.post('/signup',Authentication.signup); 
} 

export default user; 

を提出しますか?

答えて

1

はちょうどあなたがindex.htmlロジックレンダリングの前Router(app);を置く:

Router(app); 

app.get('/*',(req,res) => { 
    res.sendFile(path.join(__dirname,'./index.html')); 
}); 

をしかしRouter.jsでXHR GETリクエストのためのあなたのパスは/authのように、より具体的にする必要があります。 req.xhrをチェックして、XHRからのリクエストかレンダリングリクエストかを区別することもできます。

0

あなたのルートにはワイルドカード/*があるので、どこに行ってもこのhtmlファイルが送信されるため、これが起こっていると思います。

これが役に立ちます。

+0

はい私はそれを知っていますが、リクエストをするときにhtmlファイルを取得しないようにする方法はありますか?私はこのようなhtmlファイルをサーバーにする必要があります。これは、単一ページアプリケーションであり、HTMLファイルを提供する別のルートを定義する反応を使用しています。 – TRomesh

+1

私はReactの経験がありませんが、これはあなたが望むものを達成する方法ではないと思います。 SPAでは、インデックスファイルを毎回レンダリング/送信するのではなく、そのコンテンツだけを保持します。 これはリアクショントピックとして投稿する必要があります。あなたはより良い助けを得るでしょう! –

関連する問題