V8 8.8 中未定义 Intl

问题描述 投票:0回答:1

我为我的 macOS x86_64 系统(用于 javascript 运行时项目)构建 v8 作为静态整体库。我使用的V8版本是8.8.278.17。 按照 https://v8.dev/docs/i18n 中的步骤操作 仍然当我尝试执行使用 Intl.DateTimeFormat 对象的 JavaScript 代码时。我收到 Intl not Defined 错误。 (根据https://v8.dev/blog/intl我们应该在v8上有国际支持)

系统安装的ICU版本是70.1,表明支持Intl对象。我尝试将 v8 版本与 Intl 兼容性进行映射,但我没有找到任何参考资料表明该问题是由于 v8 版本造成的。

如果是由于 v8 版本不匹配或者 ICU 库的安装方式或其他原因导致的,任何人都可以帮忙吗

添加了示例项目的链接:https://github.com/hardikjain1008/test-v8/

v8 intl embedded-v8
1个回答
0
投票

将您的代码与官方“hello,world”示例进行比较,有几件事很突出:

  • 你的问题说你正在使用V8 8.8.278.17(这是一个令人惊讶的选择,考虑到它的年龄:3年!),但你上传的重现案例使用V8 11.6.189.22(来自更合理的5)几个月前)。是哪一个?

  • 官方样本调用

    v8::V8::InitializeICUDefaultLocation(argv[0]);
    。你做的
    v8::V8::InitializeICU();
    。您是否尝试过按照官方示例执行操作?这有帮助吗?

  • v8::V8::InitializeICU()

    (您正在调用)的文档说:

    * If V8 was compiled with the ICU data in an external file, the location
    * of the data file has to be provided.
    

    既然您没有提供数据文件的位置,我想有些东西不起作用也就不足为奇了?

  • 您拨打

    PLATFORM = v8::platform::NewDefaultPlatform()
    两次。虽然这很可能与您遇到的问题无关,但也是完全没有必要的。

© www.soinside.com 2019 - 2024. All rights reserved.