gpt4 book ai didi

reactjs - 如何将 React 应用程序捆绑到服务器上的子目录中?

转载 作者:行者123 更新时间:2023-12-03 13:06:19 25 4
gpt4 key购买 nike

我有一个在本地主机上开发的 React 应用程序。我想将其复制到服务器上名为 vensa 的子目录中。

我的 webpack 配置文件如下所示..

const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {
entry: [
'./src/index.js'
],
output: {
path: 'build',
filename: 'bundle.js'
},
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel'
},
{
test: /\.scss$/,
loader: ExtractTextPlugin.extract('style', 'css!sass')
},
{
test: /\.css$/,
loader: ExtractTextPlugin.extract('style', 'css')
},
{
test: /\.(png|eot|svg|ttf|woff(2)?)(\?v=\d+\.\d+\.\d+)?/,
loader: 'url'
}
]
},
plugins: [
new ExtractTextPlugin('vensa-dashboard.css')
],
devServer: {
historyApiFallback: true,
contentBase: './build'
}
};

index.html 文件看起来像这样...

<!DOCTYPE html>
<html>
<head>
<title>Vensa Development Test</title>
<link rel="stylesheet" href="/vensa-dashboard.css">
</head>
<body>
<div class="container"></div>
<script src="/bundle.js"></script>
</body>
</html>

我的routes.js 文件是...

import React from 'react';
import { Route, IndexRoute } from 'react-router';
import VensaDashboard from './components/VensaDashboard';
import Inbox from './components/Inbox';
import Todo from './components/Todo';
import Home from './components/Home';

export default (
<Route path="/" component={VensaDashboard}>
<IndexRoute component={Home} />
<Route path="/message" component={Inbox} />
<Route path="/todo/:todoPage" component={Todo} />
</Route>
);

但是,如果我只运行 webpack -p 并将 3 个文件复制到该子目录,它就不起作用,因为根路径是 / 并且它找不到js和css文件。我不确定要更改什么(最好的方法)(可能是这 3 个文件中的一个或全部)以使其在子目录中工作?

该应用程序的完整源代码为 here如果有帮助的话。

谢谢!

最佳答案

如果您使用的是 React Router v4,您应该能够使用 basename={foobar} 进行设置。

<Router history={browserHistory} basename={'foobar'}>
<Route path="/" component={App} />
</Router>

文档链接:https://reacttraining.com/react-router/web/api/BrowserRouter

注意:如果使用 create-react-app在子目录中,您还需要在 package.json 文件中设置 "homepage": "/foobar/", 。因此,生产构建指向正确的路径。

关于reactjs - 如何将 React 应用程序捆绑到服务器上的子目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37396427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com