asp.net-mvc - 有人知道如何在 webpack-dev-server 或类似中代理 index.html 吗?
问题描述
我有 MVC 作为我的后端。MVC 控制器/视图有 _StartPage.cshtml、_Layout.cshtml(它们组合成 _index.cshtml)。
所以,我需要使用 webpack 开发服务器代理从后端服务器获取 index.html。有什么办法吗?
到目前为止,这就是我想出的
devServer: {
historyApiFallback: true,
index: '',
contentBase: "./",
port: 8000,
proxy: [{
//Only works for api, index.html does not
context: ['/index.html', '/api'],
target: 'http://localhost',
pathRewrite: { '^/api': '/TestApp/api' }
}]
},
如果可以解决问题,我愿意使用除 webpack-dev-server 之外的任何其他客户端服务器吗?
请注意,这将仅用于开发而不是生产。
解决方案
你的项目结构如何?
webpack-dev-server 必须在开发模式下使用,构建和部署后,您需要更改生产模式的 api url。
我是前端,遇到了类似的问题,我通过DefinePlugin解决了它,它可以在不同的模式下更改 api。
我的 webpack 是这样的:
├webpack.common.js
├webpack.dev.js
├webpack.prod.js
webpack.common.js
devServer: {
// contentBase: 'dist/',
historyApiFallback: true,
watchOptions: { aggregateTimeout: 300, poll: 1000 },
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
"Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization"
},
proxy: {
'/': {
target: 'xxxxxxxxxxxx/website/',//url
changeOrigin: true,
secure: false,
}
}
},
webpack.dev.js
plugins:[
new webpack.DefinePlugin({
'SERVICE_URL': JSON.stringify('')
})
]
webpack.prod.js
plugins:[
new webpack.DefinePlugin({
'SERVICE_URL': JSON.stringify('https://xxx.api.com/') //real api
})
]
获取/ajax代码
console.log(SERVICE_URL)
$.ajax({
url: SERVICE_URL+'api/%E6%AD%A6%E6%BC%A2%E8%82%BA%E7%82%8E_%E5%8F%B0%E5%95%86_simple.json',
...
这是我的解决方案,希望能给大家一些启发。
推荐阅读
- angular-material - 如何将我的工作转换为材料角度/垫选择
- ios - kCVPixelFormatType_420YpCbCr8Planar 和 kCVPixelFormatType_420YpCbCr8PlanarFullRange 有什么区别?
- numpy - TypeError:不能将序列乘以“float”类型的非整数,非常感谢
- arduino-ide - 我尝试解析从 LoRa LoRa.readString() 发送的一些传感器数据
- c# - 询问用户是否想再玩一次,c#
- ruby-on-rails - 无法在页面刷新时保持会话
- opencv - 如何找到图像中的极端角点?
- php - 循环连接时出现太多连接错误
- java - 我的 Volley 应用程序崩溃,可能在 listView 代码上
- javascript - 我得到承诺{
关于 node.js 异步函数