2017-03-01 14 views
0

私はマイナーな変更を加えてthisワークショップgitを使用してサーバサイドレンダリングで簡単なリアクションアプリを作成しました。 したがって、ローカルで実行すると、それは正常に動作します。NODE_ENV=server node server.jsしかし、Bluemix the Nodejsサーバーの試用版にこのアプリを導入しようとした私の試みは失敗しました。実行するサーバー側のレンダリングをローカルと実際のNodeJSサーバー(IBM Bluemix)で実行するのとの違い

require('babel-register') 

const express = require('express') 
const React = require('react') 
const ReactDOMServer = require('react-dom/server') 
const ReactRouter = require('react-router') 
const StaticRouter = ReactRouter.StaticRouter 
const _ = require('lodash') 
const fs = require('fs') 
const PORT = 5050 
const baseTemplate = fs.readFileSync('./index.html') 
const template = _.template(baseTemplate) 
const App = require('./js/App').default 

const server = express() 

server.use('/_public', express.static('./_public')) 

server.use((req, res) => { 
    const context = {} 
    const body = ReactDOMServer.renderToString(
    React.createElement(StaticRouter, {location: req.url, 
     context: context}, 
    React.createElement(App)) 
) 

    res.write(template({body: body})) 
    res.end() 
}) 

console.log('listening on port', PORT) 
server.listen(PORT) 

P.S.:ここenter image description here は私server.jsコードです:ここではログがあります js/App.jsのES6構文は理解できませんが、ローカルサーバー上で動作することは明らかです。デフォルトNODE_ENV=productionことで しかしBluemix docsによると、私は.profile.dディレクトリに node_env.shコードファイルを作成:

export NODE_ENV=server; 

をしかし、私は、このファイルの変更がnode_envかはわかりません。

+0

完全ソースをgithubレポにチェックインできますか? –

+0

@RamVennam私のコードはローカルマシンで正常に動作します。はい、[Gitlab](https://gitlab.com/ytaras/pinobeton2/tree/ServerSR)にもあります。 –

答えて

0

私よりも知識の豊富な人が、より良いソリューションを提供できることを願っていますが、ここで私はあなたのアプリを動作させるために何をしましたか?おそらくもっと良い答えがあります。本番モードで実行したくないと仮定すると

...

1)server.jsは:PORTのENV varに設定されたポートに耳を傾けます。
server.listen(process.env.PORT || PORT)

2)package.json:ゲットscripts

"start": "babel-node server.js --presets es2015,stage-2"

3)でstartコマンドを追加バベル-CLI

npm install --save-dev babel-cli

npm install --save-dev babel-preset-es2015 babel-preset-stage-2

4)、これはあなたが実行したいと仮定している)

applications: 
- name: rvennam-node-react 
    memory: 1G 
    disk_quota: 2G 
    env: 
    NPM_CONFIG_PRODUCTION: false 
    NODE_ENV: dev 

5 CFのプロパティを設定アゲイン(不一致があった)package.jsonにdevDependenciesから

をeslintの依存関係を削除するmanifest.ymlを作成します。 Bluemixのデベロッパーモード。 Bluemixでの制作を望むなら、webpackを使ってローカルにビルドし、distディレクトリをプッシュして提供したいと思うでしょう。

関連する問題