简体   繁体   English

将环境变量从package.json传递到React应用

[英]Pass environment variable from package.json to React app

I'm building a React / Node / Express / Webpack (2.2.1) application and would like to know how to approach the following: 我正在构建一个React / Node / Express / Webpack(2.2.1)应用程序,并且想知道如何处理以下内容:

I would like an environment variable to be visible in the React client - the purpose being for certain api requests to use either the localhost or otherwise the IP address of the production server. 我希望环境变量在React客户端中可见-目的是某些api请求使用本地主机或生产服务器的IP地址。

Is it possible to get an environment variable from running a script in package.json, to the webpack build, and then compiled and visible in the bundled javascript. 是否有可能通过在package.json中运行脚本来获取环境变量,然后到webpack构建中进行编译,然后在捆绑的javascript中显示该变量。

So in terminal run: 所以在终端运行:

npm run build-dev // pass to Webpack something like APP_ENV="development"

or 要么

npm run build-prod // pass to Webpack something like APP_ENV="production"

and the script definition being something like: 脚本定义类似于:

"scripts": {
    "build-dev": "webpack --define APP_ENV='development'"
}

...help greatly appreciated ...帮助非常感谢

CLI with --define option 带有--define选项的CLI

--define option using webpack.DefinePlugin so you must pass a string value into app. 使用webpack.DefinePlugin --define选项,因此您必须将字符串值传递给应用程序。

Demo 演示
 "scripts": { "build-dev": "webpack --define APP_ENV=\\"'development'\\"" } 

config webpack.config.js plugins and pass process.env into app 配置webpack.config.js插件并将process.env传递到应用中

APP_ENV="development" npm run build-dev nodejs set environment variables at the head of command.you can use webpack.EnvironmentPlugin to expose process.env into bundle.js that I have tested. APP_ENV="development" npm run build-dev在命令开头APP_ENV="development" npm run build-dev nodejs设置环境变量。您可以使用webpack.EnvironmentPlugin将process.env暴露到我测试过的bundle.js中。

Demo 演示
 "scripts": { "build-dev": "APP_ENV=development webpack" } 
Test 测试
 describe('string-replace-webpack-loader', () => { it('environment exists', () => { expect(process.env.APP_ENV).toBe('dev'); }); it('replace environment variables', compile({ entry: './env.js', plugins: [ new webpack.EnvironmentPlugin(Object.keys(process.env)) ] }).then(({log}, files) => { expect(files['/bundle.js']).toMatch(/(["'])dev\\1/); })); }); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在反应应用程序中从 package.json 访问主页? - How is it possible to access homepage from package.json in a react app? 如何从 package.json 中参数化环境变量 - How to parameterize environment variables from within package.json 如何解决这个错误:package.json » eslint-config-react-app/jest#overrides[0]: Environment key "jest/globals" is unknown - How to solve this error: package.json » eslint-config-react-app/jest#overrides[0]: Environment key "jest/globals" is unknown 在Windows上,package.json中的React Create App Proxy Agent在Windows上运行缓慢 - React create app proxy agent in package.json is slow on Windows 在反应应用程序中将 package.json 上移一个目录 - Move package.json up one dirctory in react app 如何将我的应用程序中的变量加载到 package.json 中? - How to load a variable form my app into package.json? 如何将环境变量添加到package.json - How to add environment variables to package.json 如何从 package.json 设置 NODE_ENV 以进行反应 - How to set NODE_ENV from package.json for react 如何将反应应用程序创建为服务/包并将其导入另一个应用程序的“package.json” - How to create react app as a service/package and import it into 'package.json' of another app 使用package.json传递数据库URL - Pass Database URL using package.json
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM