bundle.js 刷新包含 ID 的页面时未找到 URL
bundle.js not found while refreshing the page having ID in it's URL
我 运行 遇到一个问题,我将用户重定向到显示个人资料信息的相应个人资料页面。
让我们以 http://localhost:8080/user/1
为例。
当我在导航栏中使用 link 重定向用户时,页面已成功呈现,但是当我在同一 URL (即 http://localhost:8080/user/1
)中刷新页面时,我收到一条错误消息ERROR http://localhost:8080/user/bundle.js
未找到。
我是 React router v4 的新手,请帮我解决这个问题。
提前致谢。
我的 webpack.config.js 是
var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');
var path = require("path");
var config = {
entry: ["./src/index.tsx", 'webpack-dev-server/client?http://localhost:8080'],
plugins: [
new HtmlWebpackPlugin({
template: 'index.ejs',
filename: 'index.html'
}),
],
output: {
path: path.resolve(__dirname, "build"),
filename: "bundle.js"
},
resolve: {
extensions: [".ts", ".tsx", ".js"]
},
devtool: 'source-map',
module: {
rules: [
{ test: /\.tsx?$/, use: 'tslint-loader', enforce: 'pre' },
{ test: /\.tsx?$/, use: ['babel-loader', 'awesome-typescript-loader'] },
{ test: /\.(css|scss)$/, use: ['style-loader', 'css-loader', 'sass-loader'] },
{ test: /.(png|woff(2)?|eot|ttf|svg)(\?[a-z0-9=\.]+)?$/, use: 'url-loader?limit=1024&name=fonts/[name].[ext]' },
{ test: /\.(jpg|jpeg|gif|png)$/, use: 'url-loader?limit=10&mimetype=image/(jpg|jpeg|gif|png)&name=images/[name].[ext]' }
]
},
devServer: {
contentBase: path.join(__dirname, 'build'),
hot: true,
inline: true,
historyApiFallback: true
}
};
module.exports = config;
看来您需要一个 public(又称静态)文件夹!这样您的文件将始终可以从相对位置获得。
如果不是作弊,
webpack.config.js
output: {
// your stuff
publicPath: '/assets/'
}
是clientSide和server端代码的概念。如果您在旅途中刷新页面,url 将访问服务器,它会尝试在服务器端找出该方法,但该方法不存在,因为它在客户端。
更多解释-
我 运行 遇到一个问题,我将用户重定向到显示个人资料信息的相应个人资料页面。
让我们以 http://localhost:8080/user/1
为例。
当我在导航栏中使用 link 重定向用户时,页面已成功呈现,但是当我在同一 URL (即 http://localhost:8080/user/1
)中刷新页面时,我收到一条错误消息ERROR http://localhost:8080/user/bundle.js
未找到。
我是 React router v4 的新手,请帮我解决这个问题。
提前致谢。
我的 webpack.config.js 是
var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');
var path = require("path");
var config = {
entry: ["./src/index.tsx", 'webpack-dev-server/client?http://localhost:8080'],
plugins: [
new HtmlWebpackPlugin({
template: 'index.ejs',
filename: 'index.html'
}),
],
output: {
path: path.resolve(__dirname, "build"),
filename: "bundle.js"
},
resolve: {
extensions: [".ts", ".tsx", ".js"]
},
devtool: 'source-map',
module: {
rules: [
{ test: /\.tsx?$/, use: 'tslint-loader', enforce: 'pre' },
{ test: /\.tsx?$/, use: ['babel-loader', 'awesome-typescript-loader'] },
{ test: /\.(css|scss)$/, use: ['style-loader', 'css-loader', 'sass-loader'] },
{ test: /.(png|woff(2)?|eot|ttf|svg)(\?[a-z0-9=\.]+)?$/, use: 'url-loader?limit=1024&name=fonts/[name].[ext]' },
{ test: /\.(jpg|jpeg|gif|png)$/, use: 'url-loader?limit=10&mimetype=image/(jpg|jpeg|gif|png)&name=images/[name].[ext]' }
]
},
devServer: {
contentBase: path.join(__dirname, 'build'),
hot: true,
inline: true,
historyApiFallback: true
}
};
module.exports = config;
看来您需要一个 public(又称静态)文件夹!这样您的文件将始终可以从相对位置获得。
如果不是作弊,
webpack.config.js
output: {
// your stuff
publicPath: '/assets/'
}
是clientSide和server端代码的概念。如果您在旅途中刷新页面,url 将访问服务器,它会尝试在服务器端找出该方法,但该方法不存在,因为它在客户端。 更多解释-