【问题标题】:How to run a production build of my react app locally?如何在本地运行我的 react 应用程序的生产版本?
【发布时间】:2019-12-28 14:37:27
【问题描述】:

我的 package.json 有以下脚本:

"build": "sh -ac '. .env.${REACT_APP_ENV}; react-scripts build'"

当我运行yarn build 时,我收到以下错误:

sh: .env.: No such file or directory

.env 文件按预期位于我的项目目录的顶层。有任何想法吗?

【问题讨论】:

  • 但是.env. 文件不是(见尾随点),因为REACT_APP_ENV 是空的

标签: reactjs yarnpkg production


【解决方案1】:

您也可以使用NODE_ENV 变量,它为您提供环境模式。

我不知道你是否使用create-react-app,但如果你是(一旦你构建了你的应用程序),你可以使用serve 来运行生产版本:

$ npm install -g serve

$ serve -s build

【讨论】:

    【解决方案2】:

    .env.foo 复制或重命名为.env.foo.sh 并在每行的开头添加export,如下所示:

    export REACT_APP_HEADER_COLOR="#f66"
    

    获取这个新的 shellscript 而不是旧的 env 文件:

    "sh -ac '. .env.${REACT_APP_ENV}.sh; react-scripts build'"
    

    现在变量将成功传递给构建过程,供其使用。

    为什么?

    这就是 shell 的工作原理。加载到当前 shell 的环境变量(带有 source. 或赋值)仅在导出时传递给子级:

    $ FOO=foo
    $ sh -c 'echo $FOO'
    
    $ export FOO=foo
    $ sh -c 'echo $FOO'
    foo
    

    请注意,这些单行快捷方式也会自动/隐式导出:

    $ BAR=bar sh -c 'echo $BAR'
    bar
    $ env BAR=baz sh -c 'echo $BAR'
    baz
    

    (我怀疑这种隐藏的行为经常会引起混淆。)

    【讨论】:

      猜你喜欢
      • 2021-04-30
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      相关资源
      最近更新 更多