diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/module_wrap.cc | 10 | ||||
-rw-r--r-- | src/node_internals.h | 2 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/module_wrap.cc b/src/module_wrap.cc index dfba4d5b30..0e1f7c9eaf 100644 --- a/src/module_wrap.cc +++ b/src/module_wrap.cc @@ -103,9 +103,17 @@ void ModuleWrap::New(const FunctionCallbackInfo<Value>& args) { False(isolate), // is opaque (?) False(isolate), // is WASM True(isolate)); // is ES6 module + TryCatch try_catch(isolate); ScriptCompiler::Source source(source_text, origin); - if (!ScriptCompiler::CompileModule(isolate, &source).ToLocal(&module)) + if (!ScriptCompiler::CompileModule(isolate, &source).ToLocal(&module)) { + CHECK(try_catch.HasCaught()); + CHECK(!try_catch.Message().IsEmpty()); + CHECK(!try_catch.Exception().IsEmpty()); + AppendExceptionLine(env, try_catch.Exception(), try_catch.Message(), + ErrorHandlingMode::MODULE_ERROR); + try_catch.ReThrow(); return; + } } Local<Object> that = args.This(); diff --git a/src/node_internals.h b/src/node_internals.h index b7d032c68d..67ab0bb59e 100644 --- a/src/node_internals.h +++ b/src/node_internals.h @@ -269,7 +269,7 @@ constexpr size_t arraysize(const T(&)[N]) { return N; } bool IsExceptionDecorated(Environment* env, v8::Local<v8::Value> er); -enum ErrorHandlingMode { FATAL_ERROR, CONTEXTIFY_ERROR }; +enum ErrorHandlingMode { CONTEXTIFY_ERROR, FATAL_ERROR, MODULE_ERROR }; void AppendExceptionLine(Environment* env, v8::Local<v8::Value> er, v8::Local<v8::Message> message, |