没有名为ForceSet的成员

时间:2018-08-16 22:20:57

标签: node.js npm electron

我正在使用NodeJS和Electron。使用节点10.9.0和样板electron-react-boilerplate

我已安装的所有NodeJS依赖项均正常运行,但是我需要安装一个本机模块。样板文档说要在/app目录中安装本机模块,所以我做到了,但是它把我扔了:

../src/binding.cc:619:11: error: no member named 'ForceSet' in 'v8::Object'
  target->ForceSet(Nan::New<v8::String>("endianness").ToLocalChecked(), Nan::New<v8::String>(CheckEndianness()).ToLocalChecked(), static_cast<PropertyAttribute>(ReadOnly|DontDelete));
  ~~~~~~  ^
../src/binding.cc:620:11: error: no member named 'ForceSet' in 'v8::Object'
  target->ForceSet(Nan::New<v8::String>("NULL").ToLocalChecked(), WrapNullPointer(), static_cast<PropertyAttribute>(ReadOnly|DontDelete));
  ~~~~~~ 

我已将节点版本切换为8.11.3,删除了所有已安装的node_modulespackage-lock.json文件,并首先安装了本机模块-安装已完成。

然后我切换为将模块安装在根目录中,并且得到:

Error: /usr/local/bin/node exited with code 1
Output:

> electron-react-boilerplate@1.0.0 postinstall /Users/nyc/Desktop/Electron/Project/app
> npm run electron-rebuild


> electron-react-boilerplate@1.0.0 electron-rebuild /Users/nyc/Desktop/Electron/Project/app
> node -r babel-register ../internals/scripts/ElectronRebuild.js


Error output:

An unhandled error occurred inside electron-rebuild
  CXX(target) Release/obj.target/binding/src/binding.o
../src/binding.cc:360:23: warning: 'Utf8Value' is deprecated [-Wdeprecated-declarations]
    String::Utf8Value str(in);
                      ^
/Users/nyc/.electron-gyp/iojs-3.0.0-beta.3/deps/v8/include/v8.h:2819:5: note: 'Utf8Value' has been explicitly marked deprecated here
    V8_DEPRECATED("Use Isolate version",
    ^
/Users/nyc/.electron-gyp/iojs-3.0.0-beta.3/deps/v8/include/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
../src/binding.cc:435:23: warning: 'Utf8Value' is deprecated [-Wdeprecated-declarations]
    String::Utf8Value str(in);
                      ^
/Users/nyc/.electron-gyp/iojs-3.0.0-beta.3/deps/v8/include/v8.h:2819:5: note: 'Utf8Value' has been explicitly marked deprecated here
    V8_DEPRECATED("Use Isolate version",
    ^
/Users/nyc/.electron-gyp/iojs-3.0.0-beta.3/deps/v8/include/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
../src/binding.cc:619:11: error: no member named 'ForceSet' in 'v8::Object'
  target->ForceSet(Nan::New<v8::String>("endianness").ToLocalChecked(), Nan::New<v8::String>(CheckEndianness()).ToLocalChecked(), static_cast<PropertyAttribute>(ReadOnly|DontDelete));
  ~~~~~~  ^
../src/binding.cc:620:11: error: no member named 'ForceSet' in 'v8::Object'
  target->ForceSet(Nan::New<v8::String>("NULL").ToLocalChecked(), WrapNullPointer(), static_cast<PropertyAttribute>(ReadOnly|DontDelete));
  ~~~~~~  ^

有什么办法可以避免此错误?

3 个答案:

答案 0 :(得分:1)

也经历了这一点。显然,某些软件包的节点v10有问题。为何真的没有深入了解。通过使用较低版本的节点npm install 7.10.0来解决此问题。

答案 1 :(得分:0)

这可能是if (cardLimiter > 4){ citizenLimiter = true; } 库的问题。如果是这样,请卸载该版本并安装最新版本将解决此问题:

nan

答案 2 :(得分:0)

我和您有相同的问题,我将节点版本从 10.19.0 更改为 8.17.0 并修复了。希望对您有帮助