node.js - 如何在 AWS Lambda 中将 ICU 数据添加到 Node.js?
问题描述
我的问题类似于现有的问题,但我使用的是 webpack,因此甚至没有“node_modules”目录。
我仍然尝试了以下环境变量设置但没有成功:
NODE_ICU_DATA: 'node_modules/full-icu'
NODE_ICU_DATA: '/var/task/node_modules/full-icu/icudt58l.dat'
NODE_ICU_DATA: '/var/task/node_modules/full-icu/icudt60l.dat'
一切都没有成功,lambdas 只是拒绝启动,CloudWatch 中会显示一条日志消息:
/var/lang/bin/node: could not initialize ICU (check NODE_ICU_DATA or --icu-data-dir parameters)
我在 Google 上几乎没有发现这个问题,这似乎很奇怪,因为它应该关注这么多在 AWS lambda 上构建内部应用程序的人。
解决方案
确保将正确的.dat
文件版本部署到由NODE_ICU_DATA
. 就我而言,正确的文件是在为我的 lambdasicudt62l.dat
使用运行时时。nodejs10.x
如果您不node_modules
作为 lambda 的一部分进行部署,则可以获取正确的.dat
文件并进行部署。
在将一些旧 lambdas 的运行时版本从升级nodejs6.10
到nodejs10.x
. 在我的例子中,文件icudt58l.dat
(与 兼容nodejs6.10
)被部署到项目根目录中,并且的值NODE_ICU_DATA
是.
(即我的 lambda 执行的目录,相当于/var/task/
)。
为了获得兼容的文件,我使用 lambdas 使用的节点版本.dat
重新安装了包:full-icu
npx -p node@10.x npm i full-icu
.dat
文件的版本对于您的 lambda 使用的运行时版本是正确的,这一点很重要。最初,我犯了只npm i full-icu
使用节点版本运行的错误,10.0
但这安装了错误版本的.dat
文件,我再次收到相同的错误消息。
最后,我将文件复制node_modules/full-icu/icudt62l.dat
到项目根目录中并删除旧文件icudt58l.dat
,以便它最终在/var/task/
lambda 时可以找到它的位置NODE_ICU_DATA=.
。
推荐阅读
- php - Social Rabbit - Wordpress 社交媒体插件设置认证
- simulation - 是什么导致 RiverWare 规则无序执行?
- android - 我已经有 3 周的问题了。我无法构建我的项目,因为这个问题
- wordpress - 如何单击左侧的标题并在右侧显示 Wordpress 的详细信息
- angular - 如何在 Angular 5 中显示带有选项的测验问题并保存选定的选项?
- azure - Azure Functions Core Tools 使用默认函数抛出错误:找不到 ../azurefunctions/functions.js
- gcc - 如何将 zstd 库静态链接到我的动态库?
- python - 将 ISO 8601 时间格式转换为 UNIX 时间戳(纪元)并再次返回而不会丢失小数秒?
- hyperledger-fabric - 是否可以更新或更改部署在 Hyperledger 网络中的智能合约(链码)
- kotlin - Is there any way to declare a scope extension to third party library kotlin class?