我将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以外的任何其他客户端服务器吗?
请注意,这将仅在“开发中”而不是在生产中使用。
答案 0 :(得分:0)
我认为您希望每个路径都有不同的条目。像这样的东西?
devServer: {
contentBase: './',
port: 8000
proxy: {
'/index.html': {
target: 'http://localhost/',
pathRewrite: { '^/': 'TestApp/index.html' },
},
'/api': {
target: 'http://localhost/',
pathRewrite: { '^/api': '/TestApp/api' }
},
},
}
答案 1 :(得分:0)
您的项目结构如何?
必须在开发模式下使用webpack-dev-server ,在构建和部署后,您需要更改生产模式的api网址。
我是前端用户,遇到类似的问题,我通过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',
...
这是我的解决方案,我希望它能给我一些启发。