Delete Node's symbols after Environment has been loaded

Fix #1803.
This commit is contained in:
Cheng Zhao 2015-05-29 22:20:20 +08:00
parent 6ed538b952
commit 02bdace366
2 changed files with 5 additions and 6 deletions

View file

@ -178,6 +178,9 @@ void NodeBindings::LoadEnvironment(node::Environment* env) {
if (node::use_debug_agent)
node::EnableDebug(env);
v8::Local<v8::Value> msg = mate::StringToV8(env->isolate(), "loaded");
node::MakeCallback(env->isolate(), env->process_object(), "emit", 1, &msg);
}
void NodeBindings::PrepareMessageLoop() {

View file

@ -88,12 +88,8 @@ if nodeIntegration in ['true', 'all', 'except-iframe', 'manual-enable-iframe']
window.addEventListener 'unload', ->
process.emit 'exit'
else
# The Module.runMain will run process._tickCallck() immediately, so we are
# able to delete the symbols in this tick even though we used process.nextTick
# to schedule it.
# It is important that we put this in process.nextTick, if we delete them now
# some code in node.js will complain about "process not defined".
process.nextTick ->
# Delete Node's symbols after the Environment has been loaded.
process.once 'loaded', ->
delete global.process
delete global.setImmediate
delete global.clearImmediate