【问题标题】:React & Webpack: Loading failed for the <script> with source http://localhost:8080/app/bundle.jsReact & Webpack:使用源 http://localhost:8080/app/bundle.js 加载 <script> 失败
【发布时间】:2018-09-03 11:58:17
【问题描述】:

我是 reactjs 的新手。我尝试配置对包括 index.js(包含 console.log())在内的基本索引页面的反应,但是当我尝试运行服务器时 index.html 正确显示但 bundle.js 没有加载。我搜索了很多,但没有得到正确的答案,请任何人帮助我。

我的 webpack.config.js 是

    // Webpack config js.

var webpack = require("webpack");
var path = require("path");

var DIST_VAR = path.resolve(__dirname, "dist");
var SRC_VAR = path.resolve(__dirname, "src");


var config = {
    entry : SRC_VAR + "\\app\\index.js",
    output: {
            path: DIST_VAR + "\\app\\",
            filename: "bundle.js",
            publicPath : "\\app\\",
    },
    module: {
            rules: [
                {
                    test: /\.js?/,
                    include: SRC_VAR,
                    loader: "babel-loader",
                    query: {
                        presets: [ "react" , "es2015" , "stage-2"]
                    }
                }
            ]
    }

};

module.exports = config;

控制台中显示错误:源“http://localhost:8080/app/bundle.js”的加载失败。

编辑:

已添加文件夹列表.. 文件夹路径列表 卷序号为 BE9C-4E51

C:.
|   package-lock.json
|   package.json
|   webpack.config.js
|   
+---dist
|   |   index.html
|   |   
|   \---app
|           bundle.js
|           
+---node_modules
|    <Here the node_modules>
\---src
    |   index.html
    |   
    \---App
            index.js

【问题讨论】:

  • 能否分享整个公共路径。您在哪个文件夹中创建了捆绑包?
  • 我在编辑的问题中添加了根目录树。
  • 提供像 distdist/app 这样的公共路径,然后将结果回复给我
  • 我编辑的配置是 publicPath:"dist\\app\\",但问题出在我使用 dist 作为 publicPath 也没有任何变化。
  • 您必须在此处指定文件夹名称的 saame 路径。在这里我认为如果你有 dist 作为你的公共路径 dist 和进入路径并且 dist/app 是公共路径那么我认为 app 将是路径

标签: javascript reactjs webpack


【解决方案1】:

安装后

npm init -y 

npm install --save-dev webpack webpack-dev-server webpack-cli

和你的结构文件

src/
build/
webpack.config.js
package.json

转到package.json,并添加构建命令:

"scripts": {
    "start":"webpack serve --mode development",
    "build":"webpack"
  },

在 webpack.config.js 中

const path = require('path');
 
module.exports = {
  entry: path.resolve(__dirname, './src/index.js'),
  output: {
    path: path.resolve(__dirname, './build'),
    filename: 'bundle.js',
  },
  devServer: {
    contentBase: path.resolve(__dirname, './build'),
  },
};

所以,在你的 build/index.html

<script type="text/javascript" src="./bundle.js"></script>

【讨论】:

    【解决方案2】:

    我会在没有看到您的项目文件夹结构的情况下做出一些假设。 看起来它可能是您的公共路径。除非这是您的意图,否则 /app 文件夹不应该是可见的,因为您的控制台显示“localhost:8080/app/bundle.js”,这意味着它正在寻找“project-root/src/app/app/bundle.js”。 js”而不是“project-root/src/app/bundle.js”

    在 webpack 文档中,他们告诉你默认为 root '/' 并查看我自己的 webpack 文件,这也是我当前设置的。

    参考: https://webpack.js.org/guides/public-path/

    编辑:这是一个使用 Webpack 3 的示例。版本 4 刚刚发布,这将不起作用,所以如果你使用 Webpack 4,我会小心你从哪里获取配置示例。

    const webpack = require('webpack');
    const path = require('path');
    
    module.exports = {
        plugins: [
          // new webpack.NamedModulesPlugin(),
          // new webpack.HotModuleReplacementPlugin()
        ],
        context: path.join(__dirname, 'src'),
        entry: [
          //  'webpack/hot/dev-server',
          //  'webpack-hot-middleware/client',
          //  'babel-polyfill',
          //  'history',
          './index.js'
        ],
        output: {
          path: path.join(__dirname, 'www'),
          filename: 'bundle.js',
          publicPath: '/'
        },
        module: {
          loaders: [{
            test: /\.js$/,
            exclude: /node_modules/,
            loaders: ['react-hot-loader/webpack', 'babel-loader']
          }],
          resolve: {
            modules: [
              path.join(__dirname, 'node_modules'),
            ],
          },
        };

    【讨论】:

    • 我无法理解你真正想说的。我添加了我的根目录树。你能告诉我我需要做什么吗?
    • 要么删除 publicPath,要么只输入“/”。我的只是 publicPath: '/'
    猜你喜欢
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2018-03-13
    • 2019-05-08
    • 2013-09-29
    • 2011-01-31
    相关资源
    最近更新 更多