节点:无法初始化 ICU(检查 NODE_ICU_DATA 或 --icu-data-dir 参数)

Posted

技术标签:

【中文标题】节点:无法初始化 ICU(检查 NODE_ICU_DATA 或 --icu-data-dir 参数)【英文标题】:node: could not initialize ICU (check NODE_ICU_DATA or --icu-data-dir parameters) 【发布时间】:2018-10-22 02:53:58 【问题描述】:

我正在尝试将我们 CI 环境中的节点版本从节点 6 升级到节点 8。我也更新了完整的 icu 版本。

$NODE_ICU_DATA 设置为 /usr/lib/node_modules/full-icu

但仍然出现此错误

node: could not initialize ICU (check NODE_ICU_DATA or --icu-data-dir parameters)

任何想法,如何解决这个问题?

【问题讨论】:

【参考方案1】:

您需要运行npm install,包括full-icu 包。这是full-icu 的安装后步骤,它为当前执行的节点下载适当的位。注意full-icu目录下可能会出现多个文件,没关系。

如果您已经安装了full-icu,但在这两者之间升级了 Node.js:

npm rebuild

解决了这个问题。

【讨论】:

对其他人来说,这对我有用:yarn add full-icu 然后node NODE_ICU_DATA=node_modules/full-icu ... 你也可以只用核爆node_modules并重新安装这种久经考验的方法 纱线添加--force【参考方案2】:

如果您已经安装了full-icu,但在两者之间升级了节点:

npm rebuild 确实解决了这个问题。

【讨论】:

【参考方案3】:

如果你想使用 Node.js 和 full-icu 和 Docker,你可以使用 Dockerfile 的例子:

FROM node:lts-alpine

WORKDIR /icu
RUN npm init -y && npm install full-icu
ENV NODE_ICU_DATA=/icu/node_modules/full-icu

WORKDIR /project
COPY package*.json ./
RUN npm install
COPY . .

EXPOSE 8080
CMD [ "node", "server.js" ]

它对我有用。

【讨论】:

以上是关于节点:无法初始化 ICU(检查 NODE_ICU_DATA 或 --icu-data-dir 参数)的主要内容,如果未能解决你的问题,请参考以下文章

dyld:库未加载:/usr/local/opt/icu4c/lib/libicui18n.62.dylib 在 Mac 上使用 brew 安装节点后运行 php 错误

无法让 ICU4J 与 Saxon HE 10.3 一起使用

Centos install ICU, INTL for php

无法在 Linux 上使用 pyinstaller 和 cefpython 创建可执行文件(ICU 数据的文件描述符无效)

由于 icu4j,无法运行需要“org.eclipse.pde.core”的 OSGi 测试

带有 PHP 7.1 的 Symfony 3 的给定 ICU 版本的 intl 扩展