如何在Apache中运行我的React应用程序?

时间:2018-03-30 06:20:28

标签: apache reactjs webpack bundle

目前我正在使用React和Webpack。我想在不运行" npm start"的情况下执行React。经过大量的研究后,我发现我可以在不使用" npm start"只需使用Webpack创建一个" bundle.js"。

到目前为止,我已经创建了我的" bundle.js"它在我的节点服务器上运行良好。

我现在想在Apache服务器上测试它。

" bundle.js"文件在" dist"中创建以及" index.html"。当我尝试在Apache服务器上运行时,它不包含React代码。

所以我的问题是:如何在Apache中运行我的React应用程序?

这是我的webpack-config.js

 const path = require("path");
 const HtmlWebPackPlugin = require("html-webpack-plugin");
 module.exports = {
  entry: ["./src/js/root.js"],
  output: {
    path: path.resolve(__dirname, "/dist"),
    filename: "js/main.js"
  },
 devServer: {
  contentBase: "./dist"
 },
 module: {
 rules: [
  {
    test: /\.js$/,
    exclude: /node_modules/,
    use: {
      loader: "babel-loader"
    }
  },
  {
    test: /\.html$/,
    use: [
      {
        loader: "html-loader"
      }
    ]
  }
  ]
 },
 plugins: [
   new HtmlWebPackPlugin({
   template: "./src/index.html",
   filename: "./index.html"
 })
]
};

我的index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <link rel="stylesheet" 
   href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0- 
  beta.2/css/bootstrap.min.css" >
  <title>How to set up React, Webpack, and Babel</title>
</head>
<body>
 <div class="container">
    <div class="row mt-5">
        <div class="col-md-4 offset-md-1">
            <p>Create a new article</p>
            <div id="root-container">
                <!-- form -->
            </div>
        </div>
    </div>
  </div>
 <script src="../dist/js/main.js"></script>
</body>
</html>

在我的dist文件夹中,它创建了2个文件,  index.html和main.js。

1 个答案:

答案 0 :(得分:1)

我之前遇到过你的问题,我试图在Apache上托管已编译的React代码,但之后脚本似乎没有正确加载,所以我在index.html做了一些更改以使用relative path代替absolute path

请查看this article以了解有关路径的更多信息。

之前

...
<script type="text/javascript" src="/static/js/main.f73baec9.js"></script> 
...

...
<script type="text/javascript" src="./static/js/main.f73baec9.js"></script> 
...

只需要一个额外的点。

Explantion

如果您在Apache上托管它,并且您没有使用相对路径,则服务器将尝试在服务器根目录中查找您的脚本。因此,除非您直接在服务器根目录中托管编译的React代码,否则您将需要使用相对路径。

希望有所帮助。