node.js - 使用不同环境时的条件导入/导出
问题描述
我目前正在 AWS 上使用 node14 开发 Lambda 函数,但是当我想在本地开发它时遇到问题。
在我的开发环境中,我有一个需要连接到 AWS 的公司代理。在这种情况下,我使用aws-sdk-proxy
库。但是,我不想在生产中使用这个包(因为 Lambda 已经aws-sdk
注入了 lambda 核心)。
所以,我创建了这个片段来执行两个环境之间的切换:
// aws.js
import AWSPROD from 'aws-sdk'
import AWSDEV from 'aws-sdk-proxy'
import config from '../lib/Config.js'
import logger from './logger.js'
let AWS = null
if (config.get('ENVIRONMENT') === 'dev') {
logger.debug('[DEV] Using aws-sdk-proxy')
AWS = AWSDEV
} else {
AWS = AWSPROD
}
export default AWS
不是很干净,但它有效。使用此代码,我可以执行以下操作:
import AWS from './aws.js'
现在的问题是,这段代码意味着我必须提供aws-sdk-proxy
到我的 package.json 的“prod”依赖项中。
我认为它破坏了 lambda 的性能,因为代码引发了 9Mo(没有 2Mo),但我希望保持这种调用“AWS”SDK [二维代码块]的方式。
我尝试使用required
或动态import
,但这些解决方案都不起作用。
您对改进我的代码有什么建议吗?
PS:
- 代码使用 Babel 转译为 ES5 以适应 Lambda 要求
aws-sdk-proxy
库必须保留在 devDependencies 中,因为它是一个开发依赖项
解决方案
推荐阅读
- node.js - 需要从路径读取文件以在nodejs中启动集群
- flutter - Flutter 中的不可变集合与可观察集合
- java - Java 错误:无法解析方法 split()
- firebase - 如何使用此插件“Firebase 身份验证”编写 Firebase 数据库规则
- r - 如何在将列移动到合并行的同时合并行?
- php - 给定时间的两个日期之间的日期范围
- r - 如何在不调用 ggplot() 的情况下将 ggproto 对象添加在一起并保存以备后用?
- javascript - 如何根据另一个数组的对象更改数组的对象
- python - Django:从元组中获取首选值
- php - 如何根据位置调用 PHP 中的函数?