React with Typescript hot reload IIS webserver

后端 未结 1 1254
长情又很酷
长情又很酷 2021-02-04 19:51

I would like to use hot reloading when developing my React Application in TypeScript with a C# Web Api backend. I use .Net framework and not Core so I need to use IIS or IIS Exp

1条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-02-04 20:25

    Found a solution for it using webpack dev server as reverse proxy to the IIS.

    NPM:

    npm install --save react-hot-loader@next
    
    npm install webpack-dev-server --save-dev
    

    webpack.config.js, proxy is where the IIS is running:

    var webpack = require('webpack');
    var path = require("path");
    var proxy = 'localhost:61299';
    
    module.exports = {
        entry: [
            // activate HMR for React
            'react-hot-loader/patch',
    
            // the entry point of our app
            './Scripts/src/index.tsx',
        ],
        //entry: "./Scripts/src/index.tsx",
        output: {
            filename: "./Scripts/dist/bundle.js",
        },
    
        // Enable sourcemaps for debugging webpack's output.
        devtool: "source-map",
    
        resolve: {
            // Add '.ts' and '.tsx' as resolvable extensions.
            extensions: [".webpack.js", ".web.js", ".ts", ".tsx", ".js"]
        },
    
        module: {
            loaders: [
                // All files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'.
                //{ test: /\.tsx?$/, loader: "ts-loader" }
                { test: /\.tsx?$/, loader: ['react-hot-loader/webpack', 'ts-loader'] }
            ]
        },
    
        plugins: [
            new webpack.HotModuleReplacementPlugin(),
            // enable HMR globally
    
            new webpack.NamedModulesPlugin(),
            // prints more readable module names in the browser console on HMR updates
        ],
    
        devServer: {
            proxy: {
                '*': {
                    target: 'http://' + proxy,
                }
            },
            port: 8080,
            host: '0.0.0.0',
            hot: true,
        },
    }
    

    I can then start the web server by using this command from the project root folder: node_modules\.bin\webpack-dev-server. If I then access http://localhost:8080/ I have hot reloading and I can still use the C# web api since it will proxy IIS Express at "http://localhost:61299/"

    0 讨论(0)
提交回复
热议问题