将 Apollo Server NODE_ENV 设置为“生产”模式实际上(内部)做了啥?
Posted
技术标签:
【中文标题】将 Apollo Server NODE_ENV 设置为“生产”模式实际上(内部)做了啥?【英文标题】:What does setting Apollo Server NODE_ENV to 'production' mode actually do (internally)?将 Apollo Server NODE_ENV 设置为“生产”模式实际上(内部)做了什么? 【发布时间】:2020-11-04 16:50:31 【问题描述】:我们在一个大型项目中使用 Apollo 服务器作为“接口”服务器——也就是说,它需要各种 API 并使用“模式拼接”将它们全部转换为单个 GraphQL API。
目前我们的启动脚本是
"start": "tsc && NODE_ENV=development node dist/index.js"
我们把它改成了
"start": "tsc && NODE_ENV=production node dist/index.js"
当我们推送到生产环境时,当客户端尝试访问接口服务器时,我们开始收到 400 范围内的错误(我没有确切的错误,因为我们恢复了推送)。
我们在 /index.ts
文件中所做的唯一其他更改是服务器本身的配置
introspection: true,
playground: !(process.env.NODE_ENV === 'production')
无论如何,如前所述,我们恢复到“开发”,一切正常。
将NODE_ENV
设置为production
在内部有什么作用?
我查看了 Apollo Server 文档,但找不到任何东西。
我在Deploying With Heroku 下找到了这个(我们没有使用 Heroku 进行部署,但这是我能找到的唯一参考)
要启用 Apollo Server 的生产模式,您需要设置 NODE_ENV 变量到生产环境。
但是,“生产模式”究竟是什么?我很可能错过了解释这一点的明显文档。
【问题讨论】:
你有没有机会使用内省?因为根据文档,除了在 prod 模式下禁用的游乐场之外,另一件事是。 【参考方案1】:你使用nodemon
插件吗?并且nodemon config已经设置了ENV,如:"env": "NODE_ENV": "development"
。
其他,尝试使用cross-env
设置NODE_ENV。
【讨论】:
以上是关于将 Apollo Server NODE_ENV 设置为“生产”模式实际上(内部)做了啥?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 cookie 从 apollo-server 传递到 apollo-clenet