“v8::ArrayBuffer”中的“GetContents”

use*_*822 21 v8 electron electron-builder better-sqlite3

我使用的是 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;
Run Code Online (Sandbox Code Playgroud)

jmr*_*mrk 13

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

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

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

请参阅此文档。简而言之,在 2019 年底GetContents被替换。作为一个兼容性层,nan在 2020 年初适​​应了这一点。GetBackingStore

因此,您可能必须确保所有涉及的包(Node、nan、电子等)的版本彼此匹配(在大约同一时间发布并针对彼此的意义上)。

  • @JanosVinceller:nan 2.15 确实包含我在答案中链接的修复程序。如果您说该修复不起作用,则需要更多信息。也许针对 nan 提交一个错误? (4认同)
  • 您提示使用 nan 2.15 就是解决方案!我的问题是,我没有将 nan 定义为依赖项,因此我依赖的某些库可能会引入某些旧版本。现在我明确定义了 nan 2.15.0 作为依赖项,它终于可以工作了!谢谢! (3认同)
  • 这是一个很好的提示,谢谢。现在已经是 2021 年了,我正在使用 node 17.2.0、npm 8.3.0、node-gyp 8.4.1(作为另一个问题的解决方法安装)、nan 2.15.0、电子 16.0.4,它仍然给我错误:“v8::ArrayBuffer”中没有名为“GetContents”的成员 (2认同)