我的package.json具有以下脚本:
"build": "sh -ac '. .env.${REACT_APP_ENV}; react-scripts build'"
运行yarn build
时出现以下错误:
sh: .env.: No such file or directory
.env文件位于我的项目目录的顶层,如预期的那样。有任何想法吗?
答案 0 :(得分:1)
将.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中的环境变量(带有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
(我怀疑这种隐藏的行为经常引起混乱。)
答案 1 :(得分:0)
您还可以使用NODE_ENV
变量,它为您提供了环境模式。
我不知道您是否使用create-react-app
,但是如果您使用过(一旦构建了应用程序),则可以使用serve
运行生产版本:
$ npm install -g serve
$ serve -s build