创build反应应用程序无法读取环境variables
我有一个反应的应用程序,用create-react-app
创build,然后用命令构build应用程序: npm run build
如果我们通过运行ENV=production npm run start
应用程序和开发代码,运行ENV=production npm run start
它可以读取process.env.ENV
variables,因为我将这个插件添加到webpack dev config
new webpack.DefinePlugin({ 'process.env':{ 'ENV': JSON.stringify(process.env.ENV), } }),
我也将上面的脚本添加到webpack prod config,但是如果在构buildENV=prod serve -s build
后尝试执行此命令,则无法读取环境variables
如何解决这个问题?
你无法读取ENV
的原因是因为:
(1)在开发模式下, webpack
您的文件并捆绑您的应用程序。 它也会读取(因为DefinePlugin
)你的process.env.ENV
并将其作为一个全局variables添加。 所以它基本上是从process.env
pipe道variables到你的JS应用程序。
(2) 构build应用程序(使用webpack
)后,所有内容都已经捆绑到一个或多个文件中。 在运行服务器时,只需启动一个服务于静态构build文件的HTTP服务器即可。 所以没有办法将ENV
传递给你的应用程序。
基本上DefinePlugin
所做的就是向该包添加一个var
。 例如
new webpack.DefinePlugin({ 'token': '12356234ga5q3aesd' })
会添加一个类似这样的行:
var token = '12356234ga5q3aesd';
因为JS文件是静态的,所以在你使用webpack
/捆绑之后,没有办法改变这个variables。 基本上,当你做npm run build
生成你正在创build编译的二进制/ .dll
/ .jar
/ …文件,并不能再通过插件影响其内容。
- 在create-react-app项目中增加JavaScript堆大小
- 在WebStorm中创build反应应用程序
- 用Moment JS创buildReact-App:找不到模块“./locale”
- Create-React-App如何导入目录中的所有SCSS文件?
- 创buildReact App + Express.js + Passport.jslogin问题
- 即使使用新build的应用程序,create-react-app的“npm start”也不起作用。 在chokidar node_module中抛出错误
- 如何用npm脚本在css文件中编辑相对path?
- 在Netlify上部署Express时显示API路由
- 创build – 反应 – 应用程序npm运行构build太慢