Col*_*len 7 webpack nuxt.js nuxt-edge
使用Nuxt开发通用 JS 应用程序,我尝试配置webpack 的开发代理,以便仅在开发中请求/api代理到http://127.0.0.1:500/api到达 Python REST API 的位置。按照 Nuxt 文档,我扩展了 webpack 配置,如下nuxt.config.js所示:
build: {
extend (config, { isDev }) {
// Proxy /api to Python only in dev
if (isDev) {
const devServer = {
proxy: {
'/api': 'http://127.0.0.1:5000'
}
}
config.devServer = devServer;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我记录配置,我会看到正在应用更改:
...
devServer: { proxy: { '/api': 'http://127.0.0.1:5000' } } }
...
Run Code Online (Sandbox Code Playgroud)
然而,当我访问http://127.0.0.1:8080/api/things时,我的 Nuxt 应用程序被返回(它在开发中的端口 8080 上运行),表明 webpack 开发代理没有捕获路径/api并执行代理。只是为了确认代理目标正在工作,如果我访问http://127.0.0.1:5000/api/things,我会得到预期的 API 响应。为什么当我扩展 Nuxt webpack 配置以启用 webpack 开发代理时,代理不起作用?
然而,我在@nuxt/proxy模块上取得了成功,但关键的是,我找不到一种方法让它只影响开发而不影响生产。那部分nuxt.config.js看起来像这样:
axios: {
proxy: true
},
proxy: {
'/api': 'http://127.0.0.1:5000'
},
Run Code Online (Sandbox Code Playgroud)
我很高兴使用 @nuxt/proxy 模块而不是(在其之上?)webpack 开发代理,如果它只能在开发中工作的话。
我需要这样做,并且能够使用 nuxt.config.js 中的以下内容解决这个问题
export default {
// other config ...
...process.env.NODE_ENV === 'development' && {
proxy: {
'/api': 'http://localhost:8000',
}
},
}
Run Code Online (Sandbox Code Playgroud)
如果我们正在进行开发构建,此代码只会在 nuxt 配置中添加代理密钥。
参考用于插入条件对象字段的语法(这是我以前不知道的): /sf/answers/3584031391/
呃,我找错树了。
Nuxt需要代理,即使在生产环境中也是如此。当我的初始请求被处理并且应用程序是服务器端渲染时,任何 API 请求都需要被代理,因为 Node 服务器正在执行调用,而不是浏览器,因此这些 API 请求甚至不会像 nginx 那样到达我的生产路由器或 HAProxy(它通常/为/api适当的服务进行路由)。
| 归档时间: |
|
| 查看次数: |
5912 次 |
| 最近记录: |