我在nodejs中运行服务器,但是当我尝试通过reactjs访问它时,我收到错误,因为TypeError:(0,_serverRender2.default)不是函数。我该怎么办?
import config from './config';
import apiRouter from './api';
import express from 'express';
import path from 'path';
import sassMiddleware from 'node-sass-middleware';
import serverRender from './serverRender';
const server=express();
server.set('view engine','ejs');
server.use(sassMiddleware({
src:path.join(__dirname,'sass'),
dest:path.join(__dirname,'public')
}));
server.get('/',(req,res)=> {
serverRender()
.then(content => {
res.render('index', {
content
});
})
.catch(console.error);
});
server.use(express.static('public'));
server.use('/api', apiRouter);
server.listen(config.port, () => {
console.info('express listening on port ', config.port);
});
这是我的serverRender文件
import React from 'react';
import ReactDOMServer from 'react-dom/server';
import App from './src/components/App';
import axios from 'axios';
//import config from './config';
const serverRender = () =>{
axios.get('http://localhost:8080/api/contests')
.then(resp=>{
return ReactDOMServer.renderToString(<App initialContests = {resp.data.contests}/>);
// console.log(resp.data);
});
}
export default serverRender;
答案 0 :(得分:1)
serverRender()
不会返回Promise
。您可以尝试基于回调的方法。
const serverRender = (callback) =>{
axios.get('http://localhost:8080/api/contests')
.then(resp=>{
callback(ReactDOMServer.renderToString(<App initialContests = {resp.data.contests}/>));
});
}
<强> serverRender.js 强>
server.get('/',(req,res)=> {
serverRender(content => {
res.render('index', {
content
});
});
});
答案 1 :(得分:0)
您应该检查您在 serverRender.js
中编写的代码您看到的错误告诉您,您默认
默认