【问题标题】:npm run demo doesn't pointing to demonpm run demo 不指向演示
【发布时间】:2021-12-08 08:14:32
【问题描述】:

我有两个不同的环境,分别命名为.env.development.env.production 和常见的.env

.env.development 看起来像这样,

TEST_LABEL=Development

.env.production 看起来像这样,

TEST_LABEL=Production

.env 看起来像这样,

TEST_LABEL=ENV

这是我的babel.config.js

module.exports = function (api) {
  api.cache(true);
  return {
    presets: ['module:metro-react-native-babel-preset'],
    plugins: [
      ["module:react-native-dotenv",
        {
          "moduleName": "@env"
        },]
    ]
  };
};

这是package.json中的脚本

"scripts": {
    "start": "react-native start",
    "development": "NODE_ENV=development expo start",
    "production": "NODE_ENV=production expo start",
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "web": "expo start --web",
    "eject": "expo eject",
    "test": "jest"
},

这就是我在Homescreen.js中使用它的方式

import {TEST_LABEL} from "@env"
...
<Text>{TEST_LABEL}</Text>

即使我运行生产环境,它也始终显示 Development

我在开发环境中运行npm run development 之类的应用程序,在生产环境中运行npm run production

我正在使用react-native-dotenv

这是项目结构快照,

【问题讨论】:

  • 你试过关闭缓存吗?
  • 是的,我试过了
  • 常见的.env中TEST_LABEL的值是多少?
  • 我更新了答案,清除缓存解决了问题

标签: javascript node.js react-native dotenv


【解决方案1】:

我发现了这个issue,它说唯一支持的环境是developmentproductiontest。如果你想使用其他环境名称,你可以使用experimental featureAPP_ENV

    "demo": "APP_ENV=demo expo start",
    "local": "APP_ENV=local expo start",

我认为.local 文件是由default 加载的

UDPATE

我测试了你的配置,看起来 issue 是值没有更新的原因,在你的命令中添加 -c 会清除缓存并加载正确的 env 值

    "development": "NODE_ENV=development expo start -c",
    "production": "NODE_ENV=production expo start -c",

【讨论】:

  • 我已将文件名更改为.env.production.env.development,并更改了脚本,但我仍然遇到同样的问题。
  • 您好,您知道如何根据环境构建 APK/IPA 文件,例如生成生产 APK 或生成开发 APK
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 2021-01-31
  • 2020-11-17
  • 1970-01-01
相关资源
最近更新 更多