nodejs / help

:sparkles: Need help with Node.js? File an Issue here. :rocket:
1.44k stars 276 forks source link

embedtest Cannot find module #4382

Open f4ll3nfr0msk1 opened 2 months ago

f4ll3nfr0msk1 commented 2 months ago

Details

I compiled node.js from source code with vcbuild.bat on windows os. no problem. then i tried to compile with visual studio 2022. no problem. I tried to run the release version of Embedtest from the Visual Studio 2022 compilation, following the comments instructions in the embedtest.cc file. // Format of the arguments of this binary: // Building snapshot: // embedtest js_code_to_eval arg1 arg2... // --embedder-snapshot-blob blob-path // --embedder-snapshot-create // [--embedder-snapshot-as-file] // [--without-code-cache] // Running snapshot: // embedtest --embedder-snapshot-blob blob-path // [--embedder-snapshot-as-file] // arg1 arg2... // Snapshot number: // embedtest arg1 arg2... always fails with error: Cannot find module

Node.js version

node v.20.12.2

Example code

int main(int argc, char argv) { TCHAR szExecutablePath[MAX_PATH]; TCHAR buffer[BUFSIZE] = TEXT(""); TCHAR lppPart = {NULL}; ::GetModuleFileName(NULL, szExecutablePath, MAX_PATH); ::GetFullPathName(szExecutablePath, BUFSIZE, buffer, lppPart); std::vector<char> vtarg; ULONG wchars_num = ::WideCharToMultiByte(CP_UTF8, 0, buffer, -1, NULL, 0, NULL, NULL); std::vector vtChar(wchars_num); WideCharToMultiByte(CP_UTF8, 0, buffer, -1, &vtChar[0], wchars_num, 0, NULL); std::ifstream isf("E:\node\out\Debug\snapshot.js", std::ios_base::in | std::ios_base::binary); isf.seekg(0, std::ifstream::end); int len = isf.tellg(); isf.seekg(0, std::ifstream::beg); char data = new char[len + 1]; // Add space for the nul terminator ... isf.read(data, len); data[len] = '\0'; std::string snapshot = data; snapshot.erase(std::remove_if(snapshot.begin(), snapshot.end(), [&](char ch){ return std::iscntrl(static_cast(ch));}), snapshot.end()); vtarg.push_back(strdup(std::string(&vtChar[0]).c_str())); vtarg.push_back(strdup(snapshot.c_str())); vtarg.push_back(strdup("name")); vtarg.push_back(strdup("home")); vtarg.push_back(strdup("--embedder-snapshot-create")); vtarg.push_back(strdup("--embedder-snapshot-as-file")); vtarg.push_back(strdup("--embedder-snapshot-blob")); vtarg.push_back(strdup("./snapshot.blob")); vtarg.push_back(nullptr); argv = uv_setup_args(vtarg.size() - 1, vtarg.data()); std::vector args(argv, argv + vtarg.size() - 1); /argv = uv_setup_args(argc, argv); std::vector args(argv, argv + argc);/ std::unique_ptr result = node::InitializeOncePerProcess( args, {node::ProcessInitializationFlags::kNoInitializeV8, node::ProcessInitializationFlags::kNoInitializeNodeV8Platform});

for (const std::string& error : result->errors()) fprintf(stderr, "%s: %s\n", args[0].c_str(), error.c_str()); if (result->early_return() != 0) { return result->exit_code(); }

std::unique_ptr platform = MultiIsolatePlatform::Create(4); V8::InitializePlatform(platform.get()); V8::Initialize();

output: (node:14624) Warning: It's not yet fully verified whether built-in module "vm" works in user snapshot builder scripts. It may still work in some cases, but in other cases certain run-time states may be out-of-sync after snapshot deserialization. To request support for the module, use the Node.js issue tracker: https://github.com/nodejs/node/issues (Use embedtest --trace-warnings ... to show where the warning was created) E:\node [ 'E:\node\out\Release\embedtest.exe', '__node_anonymous_main', "const path = require('node:path');console.log(process.cwd());globalThis.path = process.cwd();globalThis.file = path.resolve();const name = 'I am geezy';console.log(process.argv);globalThis.firstArg = process.argv[2];globalThis.secondArg = process.argv[3];", 'name', 'home' ]

running snapshot: TCHAR szExecutablePath[MAX_PATH]; TCHAR buffer[BUFSIZE] = TEXT(""); TCHAR* lppPart = {NULL}; ::GetModuleFileName(NULL, szExecutablePath, MAX_PATH); ::GetFullPathName(szExecutablePath, BUFSIZE, buffer, lppPart); std::vector<char> vtarg; ULONG wchars_num = ::WideCharToMultiByte(CP_UTF8, 0, buffer, -1, NULL, 0, NULL, NULL); std::vector vtChar(wchars_num); WideCharToMultiByte(CP_UTF8, 0, buffer, -1, &vtChar[0], wchars_num, 0, NULL); std::ifstream isf("E:\node\out\Debug\snapshot.js", std::ios_base::in | std::ios_base::binary); isf.seekg(0, std::ifstream::end); int len = isf.tellg(); isf.seekg(0, std::ifstream::beg); char data = new char[len + 1]; // Add space for the nul terminator ... isf.read(data, len); data[len] = '\0'; std::string snapshot = data; snapshot.erase(std::remove_if(snapshot.begin(), snapshot.end(), [&](char ch){ return std::iscntrl(static_cast(ch));}), snapshot.end()); vtarg.push_back(strdup(std::string(&vtChar[0]).c_str())); vtarg.push_back(strdup("require('./index.js')")); /vtarg.push_back(strdup("name")); vtarg.push_back(strdup("home")); vtarg.push_back(strdup("--embedder-snapshot-create")); vtarg.push_back(strdup("--embedder-snapshot-as-file"));/ vtarg.push_back(strdup("--embedder-snapshot-blob")); vtarg.push_back(strdup("./snapshot.blob")); vtarg.push_back(nullptr); argv = uv_setup_args(vtarg.size() - 1, vtarg.data()); std::vector args(argv, argv + vtarg.size() - 1); /argv = uv_setup_args(argc, argv); std::vector args(argv, argv + argc);*/ std::unique_ptr result = node::InitializeOncePerProcess( args, {node::ProcessInitializationFlags::kNoInitializeV8, node::ProcessInitializationFlags::kNoInitializeNodeV8Platform});

for (const std::string& error : result->errors()) fprintf(stderr, "%s: %s\n", args[0].c_str(), error.c_str()); if (result->early_return() != 0) { return result->exit_code(); }

std::unique_ptr platform = MultiIsolatePlatform::Create(4); V8::InitializePlatform(platform.get()); V8::Initialize();

output: node:internal/modules/cjs/loader:1146 throw err; ^

Error: Cannot find module 'E:\node\require('.\index.js')' at Module._resolveFilename (node:internal/modules/cjs/loader:1143:15) at Module._load (node:internal/modules/cjs/loader:984:27) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12) at node:internal/main/run_main_module:28:49 { code: 'MODULE_NOT_FOUND', requireStack: [] }

Node.js v20.12.2

Operating system

Windows 11

Scope

runtime

Module and version

Not applicable.

brunolpw commented 2 months ago

I got the same problem.

node:internal/modules/cjs/loader:1146
  throw err;
  ^

Error: Cannot find module '/home/bruno/Workspace/node/docker-network/main.js'
    at Module._resolveFilename (node:internal/modules/cjs/loader:1143:15)
    at Module._load (node:internal/modules/cjs/loader:984:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
    at node:internal/main/run_main_module:28:49 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

Node.js v20.12.2

Linux Ubuntu 24.04