diff --git a/ecmascript/module/js_module_execute_type.h b/ecmascript/module/js_module_execute_type.h index 5290d401bdb2fb24f020d169eb87f6cbb4c13d38..53033ebceeec6c985beb059a10fe24450cf923ff 100644 --- a/ecmascript/module/js_module_execute_type.h +++ b/ecmascript/module/js_module_execute_type.h @@ -30,5 +30,10 @@ namespace panda::ecmascript { { return executeType == ExecuteTypes::STATIC; } + + inline bool IsNapiImport(const ExecuteTypes &executeType) + { + return executeType == ExecuteTypes::NAPI; + } } // namespace panda::ecmascript #endif // ECMASCRIPT_MODULE_EXECUTE_TYPES_H diff --git a/ecmascript/module/js_module_source_text.cpp b/ecmascript/module/js_module_source_text.cpp index e82877f2e52f2f77ae539b68c2174838ba4e4e64..30d4f4f8fe819b478cbe592af641477e7cebfed5 100644 --- a/ecmascript/module/js_module_source_text.cpp +++ b/ecmascript/module/js_module_source_text.cpp @@ -460,6 +460,10 @@ int SourceTextModule::Instantiate(JSThread *thread, const JSHandle module = JSHandle::Cast(moduleHdl); // 1. Let module be this Source Text Module Record. // 2. Assert: module.[[Status]] is one of UNLINKED, LINKED, EVALUATING-ASYNC, or EVALUATED. + if (SourceTextModule::IsSharedModule(module) && IsNapiImport(executeType)) { + CString msg = "Doesn't support load shared module " + module->GetEcmaModuleRecordNameString(); + THROW_REFERENCE_ERROR_AND_RETURN(thread, msg.c_str(), false); + } ModuleStatus status = module->GetStatus(); ASSERT(status == ModuleStatus::UNINSTANTIATED || status == ModuleStatus::INSTANTIATED || status == ModuleStatus::EVALUATING_ASYNC || status == ModuleStatus::EVALUATED ||