在Webpack中,可以通过配置文件中的proxy
设置来代理后端请求。这使我可以使用带有HMR的webpack-dev-server开发应用程序的前端部分,而webpack-dev-server和我的应用程序服务器则在本地主机的不同端口上运行。 Parcel中还有一个开发服务器,默认情况下,该服务器在端口1234上运行parcel index.html
命令。是否可以同时运行Parcel开发服务器和对我的应用服务器的代理请求?
我找到了一个建议使用Express中间件的解决方案。但这不能完全彻底地解决问题。如果我的后端运行Django怎么办?那么我应该如何使用Parcel开发服务器?
答案 0 :(得分:0)
当前不直接支持此功能,请参见打开的拉取请求https://github.com/parcel-bundler/parcel/pull/2477
但是,https://github.com/parcel-bundler/parcel/issues/55列出了涉及简单包装程序的各种解决方案,例如:
const Bundler = require('parcel-bundler');
const express = require('express');
const proxy = require('http-proxy-middleware');
const app = express();
app.use('/api', proxy({
target: 'http://localhost:3000/api'
}));
const bundler = new Bundler('src/index.html');
app.use(bundler.middleware());
app.listen(Number(process.env.PORT || 1234));
答案 1 :(得分:0)
有一个名为parcel-proxy-server的npm模块可能会有所帮助。我已经尝试过了,并且在我的项目中效果很好。
从文档中: 创建一个文件,例如 server.js
const ParcelProxyServer = require('parcel-proxy-server');
// configure the proxy server
const server = new ParcelProxyServer({
entryPoint: './path/to/my/entry/point',
parcelOptions: {
// provide parcel options here
// these are directly passed into the
// parcel bundler
//
// More info on supported options are documented at
// https://parceljs.org/api
https: true
},
proxies: {
// add proxies here
'/api': {
target: 'https://example.com/api'
}
}
});
// the underlying parcel bundler is exposed on the server
// and can be used if needed
server.bundler.on('buildEnd', () => {
console.log('Build completed!');
});
// start up the server
server.listen(8080, () => {
console.log('Parcel proxy server has started');
});
然后使用呼叫node server.js
来运行您的代理和默认的包裹命令。