You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/usr/local/bin/node: symbol lookup error: /mnt/d/Developer/node-addon-examples/1_hello_world/napi/build/Release/hello.node: undefined symbol: _ZN2v88platform18NewDefaultPlatformEiNS0_15IdleTaskSupportENS0_21InProcessStackDumpingESt10unique_ptrINS_17TracingControllerESt14default_deleteIS4_EEerror Command failed with exit code 127.info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
As far as I understand, <libplatform/libplatform.h> is public V8 api, why related symbols not export.
The v8::Platform instance is a singleton that's managed by the embedder. There's simply no reason why an add-on (which isn't an embedder) would ever need to create one.
Your example add-on is not valid code. I mean, it compiles, but there's no way it'd work even if the symbols were exported.
The v8::Platform instance is a singleton that's managed by the embedder. There's simply no reason why an add-on (which isn't an embedder) would ever need to create one.
I want to use v8 api without compiling the whole v8, that's why I choose add-on. Like showcase how to use v8 api to make a hello world.
there's no way it'd work even if the symbols were exported.
Why is this ? Do you mean the code is not complete. I delibarately skip code call like v8::Script::Compile to make it minimal.
To elaborate: there can be only a single v8::Platform instance and that singleton is owned and managed by Node.js. Add-ons can't create their own because they can't set up a completely separate instance of V8.
Bad car analogy: a car has a single steering wheel and it's steered by the driver, not the passengers (heart attacks excepting!) Node is the driver, add-ons are the passengers.
Activity
bnoordhuis commentedon Aug 15, 2020
The
v8::Platforminstance is a singleton that's managed by the embedder. There's simply no reason why an add-on (which isn't an embedder) would ever need to create one.Your example add-on is not valid code. I mean, it compiles, but there's no way it'd work even if the symbols were exported.
gengjiawen commentedon Aug 16, 2020
I want to use v8 api without compiling the whole v8, that's why I choose add-on. Like showcase how to use v8 api to make a hello world.
Why is this ? Do you mean the code is not complete. I delibarately skip code call like
v8::Script::Compileto make it minimal.gengjiawen commentedon Aug 17, 2020
Looks like the symbol export controlled by macro
BUILDING_V8_PLATFORM_SHARED, I will give it a try on my local build Node.js.bnoordhuis commentedon Aug 17, 2020
To elaborate: there can be only a single
v8::Platforminstance and that singleton is owned and managed by Node.js. Add-ons can't create their own because they can't set up a completely separate instance of V8.Bad car analogy: a car has a single steering wheel and it's steered by the driver, not the passengers (heart attacks excepting!) Node is the driver, add-ons are the passengers.
targos commentedon Nov 20, 2021
@gengjiawen can we close this?