This repository was archived by the owner on Apr 8, 2020. It is now read-only.
This repository was archived by the owner on Apr 8, 2020. It is now read-only.
Call to Node module failed with error: If you use aspnet-prerendering >= 2.0.0, you must update your server-side boot module to call createServerRenderer. Either update your boot module code, or revert to aspnet-prerendering version 1.x #627
Closed
Description
The title of issue is self-descriptive.
My webpack.config
:
var path = require('path');
var webpack = require('webpack');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var merge = require('extendify')({ isDeep: true, arrays: 'concat' });
var devConfig = require('./webpack.config.dev');
var prodConfig = require('./webpack.config.prod');
var isDevelopment = process.env.ASPNETCORE_ENVIRONMENT === 'Development';
var extractCSS = new ExtractTextPlugin('site.css');
module.exports = merge({
resolve: {
extensions: ['', '.js', '.jsx']
},
module: {
loaders: [
{ test: /\.css/, loader: extractCSS.extract(['css']) },
{
loaders: ['react-hot', 'babel-loader'],
include: [ path.resolve(__dirname), 'ClientApp' ],
test: /\.js$/,
plugins: ['transform-runtime']
}
]
},
entry: { 'main-server': './ClientApp/boot-server.js' },
output: {
path: path.join(__dirname, 'wwwroot', 'dist'),
filename: '[name].js',
publicPath: '/dist/'
},
plugins: [
extractCSS,
new webpack.DllReferencePlugin({
context: __dirname,
manifest: require('./wwwroot/dist/vendor-manifest.json')
})
]
}, isDevelopment ? devConfig : prodConfig);
My boot-server.js
:
import * as React from 'react';
import { Provider } from 'react-redux';
import { renderToString } from 'react-dom/server';
import { match, RouterContext } from 'react-router';
import createMemoryHistory from 'history/lib/createMemoryHistory';
import { createServerRenderer } from 'aspnet-prerendering';
import routes from './routes';
import configureStore from './store/configureStore';
export default createServerRenderer(params => {
return new Promise((resolve, reject) => {
// Match the incoming request against the list of client-side routes
match({ routes, location: params.location }, (error, redirectLocation, renderProps) => {
if (error) {
throw error;
}
// If there's a redirection, just send this information back to the host application
if (redirectLocation) {
resolve({ redirectUrl: redirectLocation.pathname });
return;
}
// If it didn't match any route, renderProps will be undefined
if (!renderProps) {
throw new Error(`The location '${params.url}' doesn't match any route configured in react-router.`);
}
// Build an instance of the application
const store = configureStore();
const app = (
<Provider store={store}>
<RouterContext {...renderProps} />
</Provider>
);
// Perform an initial render that will cause any async tasks (e.g., data access) to begin
renderToString(app);
// Once the tasks are done, we can perform the final render
// We also send the redux store state, so the client can continue execution where the server left off
params.domainTasks.then(() => {
resolve({
html: renderToString(app),
globals: { initialReduxState: store.getState() }
});
}, reject); // Also propagate any errors back into the host application
});
});
});
I've ran webpack
command, dotnet restore
also.
Then, when I'm trying to run project from VIsual Studio, it gives me error:
Call to Node module failed with error: If you use aspnet-prerendering >= 2.0.0, you must update your server-side boot module to call createServerRenderer. Either update your boot module code, or revert to aspnet-prerendering version 1.x
It doesn't depend whether I'm running project from Visual Studio or simply dotnet run
from console.
What should I do? This guide isn't really helpful, because there is no difference between my solution and proposed.
Metadata
Metadata
Assignees
Labels
No labels