【问题标题】:ASP.NET Core + Webpack(HMR) doesn't see fileASP.NET Core + Webpack(HMR) 看不到文件
【发布时间】:2018-11-09 09:48:14
【问题描述】:

我正在为一个 ASP.NET 项目配置 webpack HMR。

这是我的webpack.config.js 包含所有路径的文件代码:

  const path = require('path');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CopyWebpackPlugin = require('copy-webpack-plugin');
const devMode = process.env.NODE_ENV !== 'production';
let dist = 'wwwroot'

module.exports = {
  mode: 'development',
  entry: {
    app: './src/js/app.js'
  },
  output: {
    path: path.resolve(__dirname, dist),
    filename: 'js/[name].min.js',
    publicPath: dist +'/'
  },
  resolve: {
    extensions: ['.ts', '.js']
  },
  module: {
    rules: [
        {
          test: /\.js$/,
          exclude: /node_modules/,
          use: {
            loader: 'babel-loader',
            options: {
              cacheDirectory: true
            }
          }
        },
        {
          test: /\.ts$/,
          use: [
              {
                loader: 'awesome-typescript-loader',
                options: { configFileName: path.resolve(__dirname, 'tsconfig.json') }
              },
          ]
        },
        {
          test: /\.s?[ac]ss$/,
          use: ['style-loader', MiniCssExtractPlugin.loader, 'css-loader',
              {
                loader: "sass-loader",
                options: {
                  includePaths: ["./src/sass"]
                }
              }
          ]
        },
        {
          test: /\.(png|jp(e*)g|gif|svg)$/,
          use: [
              {
                loader: 'file-loader',
                options: {
                  name: "[name].[ext]",
                  outputPath: 'img/',
                  publicPath: '../images/',
                }
              }
          ]
        },
        {
          test: /\.(woff|woff2|eot|ttf|otf)$/,
          use: [
              {
                loader: 'file-loader',
                options: {
                  name: "[name].[ext]",
                  outputPath: 'fonts/',
                  publicPath: '../fonts/',
                }
              }

          ]
        },
        {
          test: /\.svg$/,
          loader: 'svg-inline-loader',
          options: {
            name: "[name].[ext]",
            outputPath: 'img/',
            publicPath: '../images/',
          }
        }
    ]
  },
  resolve: {
    alias: {
      "jquery.validation": "jquery-validation/dist/jquery.validate.js"
    }
  },
  plugins: [
      new CleanWebpackPlugin(dist, {}),
      new MiniCssExtractPlugin({
        filename: "css/[name].min.css",
        chunkFilename: "[id].css",
      }),
      new CopyWebpackPlugin([
          {
            from: './src/img',
            to: 'images',
            toType: 'dir'
          }
      ]),
  ],
}

我通过npm install aspnet-webpack webpack-hot-middleware webpack-dev-middleware -D添加了HMR

并将代码添加到 Startup.cs:

 app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
            {
                HotModuleReplacement = true
            });

这是我尝试在_Layout.cshtml 文件中使用脚本的方法

<script src="~/js/app.min.js" asp-append-version="true"></script>

但是我得到了这个错误,我不明白为什么;我有一个 wwwroot 文件夹和一个文件。

我尝试重建和清理项目,但没有帮助。

我该如何解决这个问题?

【问题讨论】:

    标签: javascript c# .net asp.net-mvc webpack


    【解决方案1】:

    所以我只是像这样更新 webpack 配置

      const path = require('path');
    const CleanWebpackPlugin = require('clean-webpack-plugin');
    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    const CopyWebpackPlugin = require('copy-webpack-plugin');
    let dist = 'src'
    module.exports = {
       mode: 'development',
       entry: {
        app: './wwwroot/source/app.js'
        },
       output: {
          path: path.resolve(__dirname, dist),
          filename: '[name].min.js',
          publicPath: 'src/'
       },
       module: {
        rules: [
            {
              test: /\.js$/,
              exclude: /node_modules/,
              use: {
                loader: 'babel-loader',
                options: {
                  cacheDirectory: true
                }
              }
            },
            {
              test: /\.ts$/,
              use: [
                  {
                    loader: 'awesome-typescript-loader',
                    options: { configFileName: path.resolve(__dirname, 'tsconfig.json') }
                  },
              ]
            },
            {
              test: /\.s?[ac]ss$/,
              use: ['style-loader', MiniCssExtractPlugin.loader, 'css-loader',
                  {
                    loader: "sass-loader",
                    options: {
                      includePaths: ["./wwwroot/sass"]
                    }
                  }
              ]
            },
            {
              test: /\.(png|jp(e*)g|gif|svg)$/,
              use: [
                  {
                    loader: 'file-loader',
                    options: {
                      name: "[name].[ext]",
                      outputPath: 'img/',
                      publicPath: '../images/',
                    }
                  }
              ]
            },
            {
              test: /\.(woff|woff2|eot|ttf|otf)$/,
              use: [
                  {
                    loader: 'file-loader',
                    options: {
                      name: "[name].[ext]",
                      outputPath: 'fonts/',
                      publicPath: '../fonts/',
                    }
                  }
    
              ]
            },
            {
              test: /\.svg$/,
              loader: 'svg-inline-loader',
              options: {
                name: "[name].[ext]",
                outputPath: 'img/',
                publicPath: '../images/',
              }
            }
        ]
      },
      resolve: {
        alias: {
          "jquery.validation": "jquery-validation/dist/jquery.validate.js"
        }
      },
      plugins: [
          new CleanWebpackPlugin(dist, {}),
          new MiniCssExtractPlugin({
            filename: "css/[name].min.css",
            chunkFilename: "[id].css",
          }),
          new CopyWebpackPlugin([
              {
                from: './wwwroot/img',
                to: 'images',
                toType: 'dir'
              }
          ]),
      ],
    };
    

    现在一切都好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-18
      • 2017-05-25
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 2017-09-16
      • 2017-01-21
      相关资源
      最近更新 更多