- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个项目要从旧版 React 应用迁移到标准 create-react-app
一个(未弹出)。
在遗留项目中,它手动加载 .env
带有 dotenv
的文件和 dotenv-expand
并通过 webpack DefinePlugin
注入(inject).create-react-app
直观支持dotenv
但只能识别 REACT_APP_
的变量字首。
遗留代码中有很多地方以及使用 process.env.xxx
的其他存储库中的导入包。变量,所以现在不可能在迁移之前用前缀重命名它们。
在这种情况下,我该如何制作 create-react-app
识别没有 REACT_APP_
的 dotenv 变量字首?
顺便说一句,我试过 rewire
在 webpack 上通过一些简单的自定义构建脚本,例如捆绑 js 和 css:
const path = require('path');
const rewire = require('rewire');
const defaults = rewire('react-scripts/scripts/build.js');
let webpackConfig = defaults.__get__('config');
webpackConfig.output.filename = 'static/js/[name].js';
webpackConfig.optimization.splitChunks = { cacheGroups: { default: false } };
webpackConfig.optimization.runtimeChunk = false;
webpackConfig.plugins.find(plugin => plugin.__proto__.constructor.name === 'MiniCssExtractPlugin').options.filename = 'static/css/[name].css';
webpackConfig.plugins.find(plugin => plugin.__proto__.constructor.name === 'MiniCssExtractPlugin').options.moduleFilename = () => 'static/css/[name].css';
dotenv
和
DefinePlugin
更复杂。不确定是否可以以相同的方式实现。
最佳答案
也可以使用 rewire
// "start": "node start.js"
const rewire = require('rewire');
process.env.NODE_ENV = 'development';
let getClientEnvironment = rewire('react-scripts/config/env.js');
getClientEnvironment.__set__(
'REACT_APP',
/(^REACT_APP_|API|DEPLOY|SECRET|TOKEN|URL)/,
);
let configFactory = rewire('react-scripts/config/webpack.config.js');
configFactory.__set__('getClientEnvironment', getClientEnvironment);
let start = rewire('react-scripts/scripts/start.js');
start.__set__('configFactory', configFactory);
build
有点不同
// "build": "node build.js"
const rewire = require('rewire');
process.env.NODE_ENV = 'production';
let getClientEnvironment = rewire('react-scripts/config/env.js');
getClientEnvironment.__set__(
'REACT_APP',
/(^REACT_APP_|API|DEPLOY|SECRET|TOKEN|URL)/,
);
let configFactory = rewire('react-scripts/config/webpack.config.js');
configFactory.__set__('getClientEnvironment', getClientEnvironment);
let webpackConfig = configFactory('production');
let build = rewire('react-scripts/scripts/build.js');
build.__set__('config', webpackConfig);
关于reactjs - 如何在 create-react-app 中注入(inject)没有 REACT_APP 前缀的 dotenv 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61395056/
我正在尝试构建一个 Linkedin API 代码,但我发现了一个奇怪的错误 Fatal error: Uncaught TypeError: Argument 1 passed to Dotenv\
我正在尝试构建一个 Linkedin API 代码,但我发现了一个奇怪的错误 Fatal error: Uncaught TypeError: Argument 1 passed to Dotenv\
我在 codeigniter 项目上使用 composer 从 vlucas 安装了 phpdotenv。 我也添加了钩子(Hook),如果 v3.3 需要的话我有点困惑 $hook['pre
大家好,我很困惑我不知道我做错了什么这告诉我 fatal error :在 中找不到“Dotenv\Dotenv”类 但我不明白为什么.. $dotenv = new \Dotenv\Dotenv(d
我想在纯 ruby 环境中使用 dotenv。我的意思是我没有使用 Rails。 github 指令说有两种加载变量的方法。 require 'dotenv/load' # or require
不确定为什么会收到此消息: Fatal error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Class 'Do
我正在尝试在我的 Node 服务器上使用 dotenv 实现环境变量,但是我无法从位于根目录中的 .env 文件加载它们。当我运行 const dotenv = require("dotenv").c
我正在尝试添加 flutter_dotenv在我的项目中。我尝试将 .env 文件添加到 PROJECTNAME/filename.env 和 PROJECTNAME/lib/filename.env
我正在使用 php dotenv用于我的 php 应用程序的环境变量。 自述文件说我可以加载 php dotenv进入我的应用程序: $dotenv = new Dotenv\Dotenv(__DIR
我已经安装了 dotenv 来设置开发和生产环境变量,其中一个变量是 ROOT_API,我的 env 文件如下所示 NODE_ENV=dev ROOT_API=http://localhost/pro
这是我的文件: postgresU="myuser" postgresP="mypass" postgresH="myhost" postgresDB="mydb" postgresC="postgr
我在这里很困惑。有人,请帮助我,在 .env 文件中写入一个字符串,如下所示, AUTH_CREDENTIALS={"username":"Auth_user1","password":"ABC123
我正在尝试使用 dotenv 加载的 process.env 访问一些环境变量。 我的文件夹结构: .env src -- - server.js 我的 server.js 配置: (...) imp
我在 根文件夹中有 .env 文件 文件 NODE_ENV=development NODE_HOST=localhost NODE_PORT=4000 NODE_HTTPS=false DB_HOS
为什么我不应该在生产模式下使用 dotenv? 我在一些网站上看到了以下代码。但我不明白他们为什么要进行这种条件检查。 if (process.env.NODE_ENV !== 'production
我使用带有特殊字符的密码,symfony 返回错误“格式错误的参数“url”。” 我怎样才能使用这种密码? foo?bar 我尝试使用这样的变量 DATABASE_USER='foo' DATABAS
我正在尝试使用 dotenv-webpack 插件。这在本地效果很好。但是当我部署到 Heroku 时失败了。 我已经根据这个 git issue 遵循了建议,但仍然有问题。 我的 webpack 配
在我的 Express JS API 服务器中,我尝试使用带有 .env 的 dotenv我的环境设置文件。 我更喜欢使用 .env用于开发和生产环境的文件。 我正在使用 nodemon 进行开发,目
我在PostgreSQL中使用Diesel ORM包装器。我关注的the guide on their website具有以下代码: pub fn establish_connection() ->
使用 .env 文件存储 API 凭证时,将它们存储为带引号的字符串更好还是不带引号?两者之间有什么区别吗?例如,我的 .env 文件中有以下 Firebase 服务帐户凭据,哪种方式更好?: typ
我是一名优秀的程序员,十分优秀!