【发布时间】:2021-05-22 01:01:44
【问题描述】:
在我的 React 应用程序中(使用 Create React App cli 构建,而不是弹出)我已经设置了它,所以如果没有定义 REACT_APP_API_URL,那么它使用模拟数据。
我通过为redux-api-middleware ala 提供一个fakeFetch 函数来做到这一点
import { apiMiddleware as aMl, createMiddleware } from 'redux-api-middleware'
import fakeFetch from 'fixtures/utils/fakeFetch'
const apiMiddleware = apiBase ? aMl : createMiddleware({ fetch: fakeFetch })
// etc... configure the `redux` store with the middleware
这在开发时很好,但我希望在实际构建部署时该代码完全与构建分离。
我有什么办法可以做一些事情
<% if process.env.REACT_APP_API_URL %>
import { apiMiddleware } from 'redux-api-middleware'
<% else %>
import { createMiddleware } from 'redux-api-middleware'
import fakeFetch from 'fixtures/utils/fakeFetch'
const apiMiddleware = createMiddleware({ fetch: fakeFetch })
<% endif %>
// etc... configure the `redux` store with the middleware
防止webpack 在生产构建中包含我所有的装置/假数据,同时为我提供一种在模拟数据和实时数据之间切换的非常简单的方法?
我不想退出应用程序,但我愿意使用通过 Create React App Configuration Overrides 注入的 webpack 插件。
【问题讨论】:
-
这篇文章能回答你的问题吗? remarkablemark.org/blog/2017/02/25/webpack-ignore-module(编辑:Nvm,它涉及一个自定义的 webpack 配置,这将涉及弹出)
-
我在我的应用程序中使用了github.com/pofigizm/redux-dynamic-middlewares 来处理类似的用例。
-
感谢@AbirTaheer,但该解决方案并不能完全帮助我。仅仅基于正则表达式有选择地忽略一个模块是不够的。
-
您能不能只阅读
process.env.NODE_ENV并检查您是处于开发阶段还是生产阶段?
标签: reactjs webpack create-react-app craco