Я некоторое время работал над проектом с next.js, но когда пришло время развертывать вживую, я начал странно себя вести из express
.Я использую next.js, выражаю в качестве внутреннего сервера и использую persist для сохранения некоторых моих данных при необходимости в браузере клиента.
pages / _app.jsx
// @flow
import * as React from 'react';
import App, {Container} from 'next/app';
import { I18nextProvider } from 'react-i18next';
import { Provider } from 'react-redux';
import { PersistGate } from 'redux-persist/integration/react';
import { getPersistor, getStore } from '../store/configureStore';
import i18n from '../utils/i18n';
type Props = {
Component: Object,
pageProps: Object
}
export default class MyApp extends App<Props> {
render() {
const { Component, pageProps } = this.props;
return (
<Container>
<I18nextProvider i18n={i18n}>
<Provider store={getStore()}>
<PersistGate
loading={null}
persistor={getPersistor()}
>
<Component {...pageProps} />
</PersistGate>
</Provider>
</I18nextProvider>
</Container>
);
}
}
Конфигурация моего магазина ../store/configureStore.js
import { createStore, applyMiddleware } from 'redux';
import reducer from '../reducers';
import { persistStore } from 'redux-persist';
import { composeWithDevTools } from 'redux-devtools-extension';
let _persistor;
let _store;
// export const history = createBrowserHistory();
export const getStore = (props) => {
if (_store) {
return _store;
}
const initialState = (props) ? {...props} : {};
_store = createStore(
reducer,
initialState,
composeWithDevTools(applyMiddleware())
);
_persistor = persistStore(_store);
return _store;
};
export const getPersistor = () => {
return _persistor;
};
наконец мой файл server.js
const express = require('express');
const next = require('next');
const Router = require('./utils/dynamicRoutes');
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = Router.getRequestHandler(app);
const port = process.env.PORT || 3000;
const bodyParser = require('body-parser');
app.prepare()
.then(() => {
const server = express();
server.use(bodyParser.json());
server.use(bodyParser.urlencoded({ extended: true }));
server.get('*', (req, res) => handle(req, res));
server.listen(port, (err) => {
if (err) throw err;
console.log(`> Ready on http://localhost:${port}`);
});
})
.catch((ex) => {
console.log(ex);
console.error(ex.stack);
process.exit(1);
});
Вот проблема.Когда я запускаю сервер как NODE_ENV=production node server.js
, я получаю эту проблему
TypeError: _typeof is not a function
at _interopDefault (/mnt/sdb1/public/with-jest-flow-app/.next/server/static/GxzjAOI9ZeWUXNEi6WAv6/pages/_app.js:237:48)
at Object._interopDefault (/mnt/sdb1/public/with-jest-flow-app/.next/server/static/GxzjAOI9ZeWUXNEi6WAv6/pages/_app.js:239:15)
at call (/mnt/sdb1/public/with-jest-flow-app/.next/server/static/GxzjAOI9ZeWUXNEi6WAv6/pages/_app.js:23:31)
at Object.__webpack_require__ (/mnt/sdb1/public/with-jest-flow-app/.next/server/static/GxzjAOI9ZeWUXNEi6WAv6/pages/_app.js:2422:15)
at call (/mnt/sdb1/public/with-jest-flow-app/.next/server/static/GxzjAOI9ZeWUXNEi6WAv6/pages/_app.js:23:31)
at Module.__webpack_require__ (/mnt/sdb1/public/with-jest-flow-app/.next/server/static/GxzjAOI9ZeWUXNEi6WAv6/pages/_app.js:4050:12)
at call (/mnt/sdb1/public/with-jest-flow-app/.next/server/static/GxzjAOI9ZeWUXNEi6WAv6/pages/_app.js:23:31)
at Object.__webpack_require__ (/mnt/sdb1/public/with-jest-flow-app/.next/server/static/GxzjAOI9ZeWUXNEi6WAv6/pages/_app.js:137:18)
at call (/mnt/sdb1/public/with-jest-flow-app/.next/server/static/GxzjAOI9ZeWUXNEi6WAv6/pages/_app.js:23:31)
at __webpack_require__ (/mnt/sdb1/public/with-jest-flow-app/.next/server/static/GxzjAOI9ZeWUXNEi6WAv6/pages/_app.js:91:18)
Я карри, если бы кто-то сталкивался с этой проблемой раньше, и было бы здорово, если кто-нибудь поможет мне решить ее
Я тоже здесь задавал вопрос -> https://github.com/zeit/next.js/issues/7678