當試圖呈現我的第二頁(服務)我發現它只是呈現主頁。我很新,表達和節點,所以我不明白爲什麼。無法res.render()與express.js
import config from './config';
import apiRouter from './api';
import express from 'express';
const server = express();
import {home, services} from './serverRender';
server.set('view engine', 'ejs');
server.get('/', (req, res) => {
var contents = home();
res.render('index', {
content: contents
});
});
server.get('/services', (req, res) => {
var contents = services();
res.render('services', {
content: contents
});
});
server.use(express.static('public'));
server.listen(config.port,() => {
console.info('Express listening on port', config.port);
});
serverRender.js:
import React from 'react'
import ReactDOMServer from 'react-dom/server'
import Home from './src/components/Home'
import Services from './src/components/Services'
import config from './config';
const home =() => {
ReactDOMServer.renderToString(
<Home />
);
};
const services =() => {
ReactDOMServer.renderToString(
<Services />
);
};
export {home, services}
index.ejs和services.ejs(他們得到了相同的代碼)
<%- include('header') -%>
<div id="root"><%- content -%></div>
<%- include('footer') -%>
config.js
const env = process.env
export const nodeEnv = env.NODE_ENV || 'development'
export default {
port: env.PORT || 8080,
host: env.HOST || '0.0.0.0',
get serverUrl() {
return `http://${this.host}:${this.port}`;
}
};
指數.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './components/App';
ReactDOM.render(
<App initialContests={window.initialData.contests} />,
document.getElementById('root')
);
UPDATE
我已經想通了,由於某種原因,快遞只渲染index.js。我認爲這可能與我的webpack配置有關,這個文件被列爲條目。我不知道如何解決它,任何幫助將不勝感激。
你的配置文件是什麼樣的?我忍不住感覺你的代碼中還有其他的東西干擾 –
我會發布這個以及 – anoop
我看到你在使用JSX,這意味着你必須使用Webpack或類似的東西。查看這些應用程序的輸出,看看它是否正確。 此外,我強烈建議你不要使用'字符,因爲這通常是一個SQL引用表示一個表或一個值。 –