Node.js错误“;ReferenceError:全局未定义“;在从0.10.2更新到0.12.2之后
Node.js error "ReferenceError: global is not defined" after updating from 0.10.2 to 0.12.2
以下代码用于在使用Node.js重定向控制台的服务器上执行沙盒JavaScript代码。
在我们将版本从Node.js 0.10.2
更新为Node.js 0.12.2
之前,它起到了很好的作用
var EOL = require('os').EOL;
DataView = undefined;
DTRACE_NET_SERVER_CONNECTION = undefined;
// DTRACE_NET_STREAM_END = undefined;
DTRACE_NET_SOCKET_READ = undefined;
DTRACE_NET_SOCKET_WRITE = undefined;
DTRACE_HTTP_SERVER_REQUEST = undefined;
DTRACE_HTTP_SERVER_RESPONSE = undefined;
DTRACE_HTTP_CLIENT_REQUEST = undefined;
DTRACE_HTTP_CLIENT_RESPONSE = undefined;
COUNTER_NET_SERVER_CONNECTION = undefined;
COUNTER_NET_SERVER_CONNECTION_CLOSE = undefined;
COUNTER_HTTP_SERVER_REQUEST = undefined;
COUNTER_HTTP_SERVER_RESPONSE = undefined;
COUNTER_HTTP_CLIENT_REQUEST = undefined;
COUNTER_HTTP_CLIENT_RESPONSE = undefined;
global = undefined;
process.argv = undefined;
process.versions = undefined;
process.env = { NODE_DEBUG: false };
process.addListener = undefined;
process.EventEmitter = undefined;
process.mainModule = undefined;
process.removeListener = undefined;
process.config = undefined;
// process.on = undefined;
process.openStdin = undefined;
process.chdir = undefined;
process.cwd = undefined;
process.umask = undefined;
GLOBAL = undefined;
root = undefined;
setTimeout = undefined;
setInterval = undefined;
clearTimeout = undefined;
clearInterval = undefined;
setImmediate = undefined;
clearImmediate = undefined;
module = undefined;
require = undefined;
msg = undefined;
delete DataView;
delete DTRACE_NET_SERVER_CONNECTION;
// delete DTRACE_NET_STREAM_END;
delete DTRACE_NET_SOCKET_READ;
delete DTRACE_NET_SOCKET_WRITE;
delete DTRACE_HTTP_SERVER_REQUEST;
delete DTRACE_HTTP_SERVER_RESPONSE;
delete DTRACE_HTTP_CLIENT_REQUEST;
delete DTRACE_HTTP_CLIENT_RESPONSE;
delete COUNTER_NET_SERVER_CONNECTION;
delete COUNTER_NET_SERVER_CONNECTION_CLOSE;
delete COUNTER_HTTP_SERVER_REQUEST;
delete COUNTER_HTTP_SERVER_RESPONSE;
delete COUNTER_HTTP_CLIENT_REQUEST;
delete COUNTER_HTTP_CLIENT_RESPONSE;
delete global;
delete process.argv;
delete process.versions;
delete GLOBAL;
delete root;
delete setTimeout;
delete setInterval;
delete clearTimeout;
delete clearInterval;
delete setImmediate;
delete clearImmediate;
delete module;
delete require;
delete msg;
var content = '';
process.stdin.resume();
process.stdin.on('data', function(buf) { content += buf.toString(); });
process.stdin.on('end', function() {
var inputData = content.trim().split(EOL);
var result = code.run(inputData);
if (result !== undefined) {
console.log(result);
}
});
var code = {
run: function Solve(args) {
console.log('works');
}
};
现在代码抛出了一个异常:
util.js:67
if (isUndefined(global.process)) {
^
ReferenceError: global is not defined
at Object.exports.deprecate (util.js:67:19)
at net.js:1414:34
at NativeModule.compile (node.js:805:5)
at NativeModule.require (node.js:774:18)
at tty.js:23:11
at NativeModule.compile (node.js:805:5)
at Function.NativeModule.require (node.js:774:18)
at process.stdin (node.js:533:34)
at Object.<anonymous> (C:'Program Files'nodejs'test.js:75:8)
at Module._compile (module.js:460:26)
我的75号线是:
process.stdin.resume();
这个问题与进程变量有关吗?如果是,我如何在Node.js 0.12.2中使用stdin/stdout进行读写
如果问题出在process.stdin.resume();
上,我如何使用Node.js 0.12.2获得相同的结果
编辑
正如文件所说的
流程对象是一个全局对象,可以从任何地方访问。
这更令人困惑,因为异常是process.stdin.resume();
线上的ReferenceError: global is not defined
。
global = undefined;
delete global;
不要那样做。
相关文章:
- Bookshelf.js,在fetchAll()方法之后更新
- jQuery Slider/Carousel 在 DOM 之后更新内容
- 在arr.splice()之后更新变量
- 我需要一些关于PHP的帮助,并在“?”之后更新URL
- 在 jQuery UI Sortable 之后更新 CollectionView 内容的最佳方式
- 在成功调用ajax之后更新引导popover的内容
- 在“ac change”之后更新“acute.select”列表
- 在jquery.load()之后更新dom
- 如何在不刷新页面的情况下在AjaxCall之后更新HighSlide内容
- $http之后更新多个控制器中的作用域
- 在每一步/单击之后更新引导程序日期时间选择器
- 指令不会在父作用域的$http response之后更新作用域
- Angular 2:在valueChanges之后更新FormControl验证器
- 在使用jquery或ajax更新表之后更新输入表单
- 如何让Angular在ajax get之后更新集合
- 内容可编辑分区-在.html()之后更新光标位置
- 如何在jQuery .load()之后更新DOM
- 如何在一个很长的HTTP请求之后更新DOM,而不用在Angular中使用$scope
- AngularJS如何在事件监听器之后更新视图/作用域
- 在持久性烬之后更新dom