构建项目时出现Can't resolve 'aws-sdk'错误,aws-sdk为newrelic间接依赖
解决@newrelic/native-metrics构建时缺失aws-sdk的问题
碰到这个问题真的挺闹心的——明明aws-sdk不是咱们项目需要的,却因为New Relic的依赖链报错。确实没必要把它装成项目直接依赖,这里有几个更合理的解决思路:
升级New Relic相关包到最新稳定版
有些旧版本的@newrelic/native-metrics对aws-sdk的依赖声明有问题,把它标记成了必需而非可选依赖。执行下面的命令升级到最新版,大概率能解决:# npm 用户 npm update @newrelic/native-metrics newrelic # yarn 用户 yarn upgrade @newrelic/native-metrics newrelic禁用Native Metrics功能(如果不需要的话)
aws-sdk是@newrelic/native-metrics用于AWS环境下特定指标收集的依赖,如果你的部署环境不是AWS,或者不需要这类原生指标,可以直接禁用这个功能。在构建前设置环境变量:# Linux/macOS 终端 export NEW_RELIC_NATIVE_METRICS_DISABLE=true # Windows 命令行 set NEW_RELIC_NATIVE_METRICS_DISABLE=true # 或者在项目的.env文件中添加 NEW_RELIC_NATIVE_METRICS_DISABLE=true这样构建时就不会加载涉及aws-sdk的代码逻辑了。
通过构建工具忽略缺失的依赖
如果需要保留Native Metrics功能,又不想安装aws-sdk,可以在Webpack(或其他构建工具)的配置中把aws-sdk设为忽略项。比如在webpack.config.js里添加:module.exports = { resolve: { fallback: { "aws-sdk": false } } };Webpack会跳过对aws-sdk的解析,而
@newrelic/native-metrics内部会检测到模块缺失,自动跳过相关AWS特定逻辑,不会影响核心功能。
之所以不推荐直接安装aws-sdk作为项目依赖,是因为它体积庞大,而且完全是New Relic的内部依赖,强行引入会增加项目的依赖冗余,还可能和其他依赖产生版本冲突。
内容的提问来源于stack exchange,提问作者SilentImp
相关产品推荐
相关产品推荐

