6

我正在使用 Webpack ^4.26.0。在用于 CSS 之前,我已经在 Webpack 3 中使用了“extract-text-webpack-plugin”。但是我读到该插件在 Webpack 4 上不再工作了。“extract-text-webpack-plugin”建议使用“mini-css-extract-plugin”-plugin。

我已经通过命令安装了插件:

npm install --save-dev mini-css-extract-plugin

并需要 webpackconfig 中的插件,并将其添加到我的规则和插件中:

// webpack.config.js
const webpack = require("webpack");
const path = require("path");
const CopyWebpackPlugin = require("copy-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");

const config = {
  context: path.resolve(__dirname),
  entry: "./index.js",
  devServer: {
    contentBase: "./dist"
  },
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "bundle.js"
  },
  resolve: {
    // Add '.ts' and '.tsx' as resolvable extensions.
    extensions: [".ts", ".tsx", ".js", ".json"]
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        include: path.resolve(__dirname),
        use: [
          {
            loader: "babel-loader",
            options: {
              presets: [["@babel/env", { modules: false }], "@babel/react"]
            }
          }
        ]
      },
      {
        test: /\.tsx?$/,
        loader: "awesome-typescript-loader"
      },
      {
         test: /\.css$/,
         use: [MiniCssExtractPlugin.loader, "css-loader"]
       }
    ],
    noParse: [/aws-sdk/]
  },
  plugins: [
    new webpack.DefinePlugin({
      "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV),
      "process.env.STATIC_PORT": JSON.stringify(process.env.STATIC_PORT),
      VERSION: JSON.stringify(require("./package.json").version)
    }),
    new MiniCssExtractPlugin({
      filename: 'bundle.css'
    }),
    new CopyWebpackPlugin([{ from: "./cb_icons", to: "cb_icons" }])
  ],
  node: { fs: "empty" },
  externals: [{ "./cptable": "var cptable" }, { "./jszip": "jszip" }]
};

module.exports = config;

但是我收到以下错误: 在此处输入图像描述

它安装在我的 node_modules 中:

组件/searchkit/node_modules/mini-css-extract-plugin

我的文件夹结构: 在此处输入图像描述

4

4 回答 4

1

我遇到了与此完全相同的问题。我收到错误的原因是我的 package.json 文件中缺少 webpack.config.js 中引用的开发依赖项。

因此,例如在 OP 的情况下,一些需要在 devDependencies 中的东西将是 babel-loader、awesome-typescript-loader、css-loader 等。仔细检查这些是否都在 devDependencies 中。

于 2020-06-15T14:55:50.083 回答
0

如果它的显示模块错误而不是检查您的导入或需要模块,例如..

var mini-css-extract-plugin = require("mini-css-extract-plugin")

于 2020-06-17T18:00:22.653 回答
0

默认情况下,Heroku 将安装 package.json 中列出的所有依赖项,位于 dependencies 和 devDependencies 下。在运行安装和构建步骤之后,Heroku 将在部署应用程序之前删除 devDependencies 下声明的包。

来源:https ://devcenter.heroku.com/articles/nodejs-support

如果您在运行时需要 devDependencies,您可以将其卸载并安装为运行时依赖项,或者将 heroku 环境变量设置为不修剪您的 devDependencies。

在命令行中,它看起来像这样:

  heroku config:set NPM_CONFIG_PRODUCTION=false
于 2019-05-30T18:55:19.557 回答
0

如果您已经安装了包并且可以在 package.json 文件中看到它(在 devDependencies 下),您可能只需要使用以下命令将全局安装的包链接到您的项目。

npm link mini-css-extract-plugin
于 2021-07-13T11:53:46.330 回答