V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
5wunian
V2EX  ›  Node.js

egg-script 默认写死 NODE_ENV=production

  •  
  •   5wunian · 2020-10-12 14:37:09 +08:00 · 4025 次点击
    这是一个创建于 1480 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天查 NODE_ENV 变量无法根据外面环境变动,测了很多遍排查了一天! egg-scrip -env=test 无法对 NODE_ENV 生效
    5 条回复    2020-10-12 17:01:32 +08:00
    rockdai
        1
    rockdai  
       2020-10-12 14:40:42 +08:00
    ZehaiZhang
        2
    ZehaiZhang  
       2020-10-12 14:59:46 +08:00
    --env 吧,你是不是少了个 - 导致的
    5wunian
        3
    5wunian  
    OP
       2020-10-12 16:49:37 +08:00
    兄弟,暂时不想改了。地址在这里: https://github.com/eggjs/egg-scripts/blob/master/lib/cmd/start.js
    egg issue 里討论的再多,都不如 Show 代码.
    Model 层引用需要改为使用 EGG_SERVER_ENV 就 OK 了.egg 框架里 对 NODE_ENV 暂时不友好,不喜欢至少不要写死啊,这破坏了预期啊.已提 ISSUE
    https://github.com/eggjs/egg/issues/4492
    5wunian
        4
    5wunian  
    OP
       2020-10-12 16:51:06 +08:00
    @ZehaiZhang 这个是赋值给 EGG_SERVER_ENV 环境变量的
    ZehaiZhang
        5
    ZehaiZhang  
       2020-10-12 17:01:32 +08:00
    @5wunian
    1.那应该是正文笔误,`egg-scrip --env=test ` 而不是`egg-scrip -env=test ` ,后者少一个'-'
    2.我一般通过`ctx.app.config.xxx`来获取环境变量
    更多请参考官方文档: https://eggjs.org/zh-cn/basics/env.html
    很多 Node.js 应用会使用 NODE_ENV 来区分运行环境,但 EGG_SERVER_ENV 区分得更加精细。一般的项目开发流程包括本地开发环境、测试环境、生产环境等,除了本地开发环境和测试环境外,其他环境可统称为服务器环境,服务器环境的 NODE_ENV 应该为 production 。而且 npm 也会使用这个变量,在应用部署的时候一般不会安装 devDependencies,所以这个值也应该为 production 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1234 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:11 · PVG 07:11 · LAX 16:11 · JFK 19:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.