-
-
Notifications
You must be signed in to change notification settings - Fork 32.2k
Closed
Labels
v8 engineIssues and PRs related to the V8 dependency.Issues and PRs related to the V8 dependency.vmIssues and PRs related to the vm subsystem.Issues and PRs related to the vm subsystem.
Description
While working on my electron based REPL application, I noticed a weird behaviour in vm.runInContext
.
Program
Desktop π βΉ cat repl-vm-strict.js
'use strict';
const vm = require('vm');
const ctx = vm.createContext();
try {
const result = vm.runInContext('"use strict"; x = 1', ctx);
} catch(e) {
console.log(e.stack);
console.log('x is', ctx.x)
}
Output
Desktop π βΉ node repl-vm-strict.js
ReferenceError: x is not defined
at evalmachine.<anonymous>:1:17
at Object.exports.runInContext (vm.js:44:17)
at Object.<anonymous> (/Users/princejohnwesley/Desktop/repl-vm-strict.js:7:21)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:140:18)
at node.js:1001:3
x is 1
Behaviour
vm.runInThisContext
/vm.runInContext
throws error. β- context is also updated as if variable is created with
var
orlet
binding β
Versions
Tested versions: v5.6.0
& v5.1.1
Platform
Desktop π βΉ uname -a
Darwin Princes-MacBook-Pro.local 15.3.0 Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64 x86_64
Subsystem
vm
repl
with strict
is affected by this issue.
Metadata
Metadata
Assignees
Labels
v8 engineIssues and PRs related to the V8 dependency.Issues and PRs related to the V8 dependency.vmIssues and PRs related to the vm subsystem.Issues and PRs related to the vm subsystem.