I’m encountering an issue with my React SSR (Server-Side Rendering) application deployed on an IIS server using iisnode. The application runs fine locally with SSR, but when I try to access it through the server, I get a 500 Internal Server Error.
Here is relevant part of the code
package.json
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"build-server": "webpack --config webpack.server.js",
"test": "react-scripts test",
"eject": "react-scripts eject",
"ssr": "npm run build && npm run build-server && node build-server/main.js"
},
webpack.server.js
const path = require('path');
const nodeExternals = require('webpack-node-externals');
module.exports = {
entry: './server/server.js', // Ensure this path is correct
target: 'node',
externals: [nodeExternals()],
output: {
path: path.resolve(__dirname, 'build-server'),
filename: 'main.js'
},
module: {
rules: [
{
test: /.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: [
'@babel/preset-env',
'@babel/preset-react'
]
}
}
},
{
test: /.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
},
resolve: {
extensions: ['.js', '.jsx']
}
};
web.config
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="build-server/main.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<rule name="DynamicContent">
<match url="/*" />
<action type="Rewrite" url="build-server/main.js" />
</rule>
</rules>
</rewrite>
<iisnode loggingEnabled="true"/>
</system.webServer>
</configuration>
error when browsing site url