【问题标题】:'GetContents' in 'v8::ArrayBuffer''v8::ArrayBuffer' 中的'GetContents'
【发布时间】:2021-11-16 07:32:42
【问题描述】:

我使用的是 Mac M1,刚刚升级到 Node 14.17.6LTS。

我尝试使用电子生成器 (22.11.7) 重建 better_sqlite3 (7.4.3),但出现以下错误:

“v8::ArrayBuffer”中没有名为“GetContents”的成员

任何想法如何解决这个问题?提前致谢!

gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
  SOLINK_MODULE(target) Release/.node
  CXX(target) Release/obj.target/fse/fsevents.o
In file included from ../fsevents.cc:6:
In file included from ../../nan/nan.h:2884:
../../nan/nan_typedarray_contents.h:34:43: error: no member named 'GetContents' in 'v8::ArrayBuffer'
      data   = static_cast<char*>(buffer->GetContents().Data()) + byte_offset;

【问题讨论】:

    标签: electron v8 electron-builder better-sqlite3


    【解决方案1】:

    我使用的是 Mac M1,刚刚升级到 Node 14.17.6LTS。

    鉴于 Node 16 正式引入了 M1 支持,这是一个有趣的选择。

    “v8::ArrayBuffer”中没有名为“GetContents”的成员

    this doc。简而言之,GetContents 在 2019 年末被 GetBackingStore 取代。作为兼容层,2020 年初,nan adapted to this

    因此,您可能必须确保所有涉及的软件包(Node、nan、electron...)的版本相互匹配(在大约同时发布并相互针对的意义上)。

    【讨论】:

    • 这是一个很好的提示,谢谢。现在已经是 2021 年了,我正在使用 node 17.2.0、npm 8.3.0、node-gyp 8.4.1(作为另一个问题的解决方法安装)、nan 2.15.0、electron 16.0.4,它仍然给了我错误:“v8::ArrayBuffer”中没有名为“GetContents”的成员
    • @JanosVinceller:nan 2.15 确实包含我在答案中链接的修复程序。如果您说该修复程序不起作用,则需要更多信息。也许提交一个针对 nan 的错误?
    • 您使用 nan 2.15 的提示就是解决方案!我的问题是,我没有将 nan 定义为依赖项,所以我依赖的一些库可能会引入一些旧版本。现在我将 nan 2.15.0 明确定义为依赖项,它终于可以工作了!谢谢!
    • 另外两个cmets。我使用的是较旧的 npm,但再次出现错误。再次安装最新的 npm 给我带来了另一个错误 (stackoverflow.com/questions/69692842/…),我可以通过以下答案之一解决:export NODE_OPTIONS=--openssl-legacy-provider
    猜你喜欢
    • 2017-02-09
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多