javascript - webpack 在react.js 中无法正常工作

标签 javascript reactjs webpack create-react-app

我使用create-react-app命令创建了一个“hello-world”React应用程序,然后我尝试使用webpack运行相同的文件,但它确实无法正常工作,例如 .ico.css 文件未渲染到屏幕上。请帮助我解决此问题。

webpack.config.js

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    path: path.join(__dirname, 'public'),
    filename: 'bundle.js'
  },
  module: {
    rules: [{
      loader: 'babel-loader',
      test: /\.js$/,
      exclude: /node_modules/
    },
    {
      test: /\.css$/,
      exclude: /node_modules/,
      use: [
        {
          loader: 'style-loader'
        },
        {
          loader: 'css-loader',
          options: {
            modules: true,
            // camelCase: true,
            sourceMap: true
          }
        }
      ]
    },
    {
      test: /\.svg$/,
      loaders: [
        'babel-loader',
        {
          loader: 'react-svg-loader',
          query: {
            jsx: true
          }
        },
      ]
    },
    {
      test: /\.json$/,
      loader: 'json-loader',
    },
    {
      test: /\.(jpg|jpeg|gif|png|ico)$/,
      exclude: /node_modules/,
      loader:'file-loader?name=img/[path][name].[ext]&context=./app/images'
   }
  ]
  },
  devtool: 'cheap-module-eval-source-map',
  devServer: {
    contentBase: path.join(__dirname, 'public')
  }
};

package.json

{
  "name": "indecision-app",
  "version": "1.0.0",
  "main": "index.js",
  "author": "Andrew Mead",
  "license": "MIT",
  "scripts": {
    "serve": "live-server public/",
    "build": "webpack",
    "start": "webpack-dev-server"
  },
  "dependencies": {
    "json-loader": "^0.5.7",
    "live-server": "^1.2.0",
    "react": "15.6.1",
    "react-dom": "15.6.1",
    "react-svg-loader": "^2.1.0",
    "style-loader": "^0.20.3",
    "validator": "8.0.0"
  },
  "devDependencies": {
    "babel-cli": "6.24.1",
    "babel-core": "6.25.0",
    "babel-loader": "7.1.1",
    "babel-preset-env": "1.5.2",
    "babel-preset-react": "6.24.1",
    "css-loader": "^0.28.11",
    "file-loader": "^1.1.11",
    "html-webpack-plugin": "^3.2.0",
    "webpack": "^2.7.0",
    "webpack-cli": "^2.0.14",
    "webpack-dev-server": "2.5.1"
  }
}

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="theme-color" content="#000000">
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json">
    <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
    <title>React App</title>
  </head>
  <body>
    <noscript>
      You need to enable JavaScript to run this app.
    </noscript>
    <div id="root"></div>
    <script src="/bundle.js"></script>
  </body>
</html>

.babelrc

{
  "presets": ["env", "react"]
}

剩余文件与创建 create-react-app 时自动生成相同。帮我解决这个问题

最佳答案

好吧,create-react-app 已经有了他的 webpack 配置、babel 配置以及它自己的 node_module 中的其他所有内容。

我可以看到您更改了启动和构建命令。 create-react-app 在此处设置的默认命令已经运行调用 webpack 的脚本(使用 babel 等),并具有正确的配置(处理 .ico 文件)和其他一切)

如果您想自己处理它,您可以弹出您的create-react-app。这意味着将所有配置文件和脚本放在项目的根目录中,并删除 create-react-app 为您安装的模块。您可以了解更多here以及为您弹出项目的命令 here

如果你想更改 webpack 配置而不弹出,可以使用 react-app-rewired 。 (因为我想保留来自 create-react-app 存储库的更新,所以我使用这个替代方案)

关于javascript - webpack 在react.js 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49856468/

相关文章:

javascript - 无法在 Appcellerator Titanium 项目中使用 sjcl

javascript - 仅从特定页面重定向页面

javascript - 如何更改 div 的颜色和宽度?

javascript - 提交消息后,textarea出现换行

javascript - 如何仅在使用 React 将某些内容添加到数组时才运行 useEffect?

ios - React Native : Building for IOS failed on XCode 9. 2 和 9.4 以及 RN 55.4

webpack - 在哪里可以找到 webpack 3 的文档?

javascript - X 轴上的 Nivo Line Formatting 时间刻度

javascript - 带有 requirejs/AMD 的 Webpack

webpack - Antd 语言环境未定义