From 24a5d8cab55a1f7e82123f40c03611f5fee2dc9e Mon Sep 17 00:00:00 2001 From: engsr6982 Date: Fri, 27 Dec 2024 01:57:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E5=BC=95=E6=93=8E=E6=97=B6Gc=E5=BC=95=E5=8F=91=E5=B4=A9?= =?UTF-8?q?=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Manager/NodeManager.cc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Manager/NodeManager.cc b/src/Manager/NodeManager.cc index 90c56243..1df99a85 100644 --- a/src/Manager/NodeManager.cc +++ b/src/Manager/NodeManager.cc @@ -8,7 +8,9 @@ #include "env.h" #include "fmt/core.h" #include "nlohmann/json.hpp" +#include "node.h" #include "uv/uv.h" +#include "v8-cppgc.h" #include "v8/v8.h" #include #include @@ -52,6 +54,15 @@ void NodeManager::initNodeJs() { } void NodeManager::shutdownNodeJs() { + for (auto& [id, wrapper] : mEngines) { + if (wrapper.mIsRunning) { + node::Stop(wrapper.mEnvSetup->env()); + wrapper.mIsRunning = false; + } + } + + // 清空引擎列表 + mEngines.clear(); v8::V8::Dispose(); v8::V8::ShutdownPlatform(); } @@ -90,8 +101,8 @@ EngineWrapper* NodeManager::newScriptEngine() { EngineScope scope(engine); BindAPI(engine); // 绑定API - EngineWrapper warpper{id, engine, std::move(envSetup)}; - mEngines.insert({id, std::move(warpper)}); + // EngineWrapper warpper; + mEngines.emplace(id, EngineWrapper{id, engine, std::move(envSetup)}); node::AddEnvironmentCleanupHook( isolate,