NodeJs:新的Require对象(Request)之间的区别? webstorm ide中的错误

时间:2014-05-03 09:40:07

标签: node.js webstorm

我想知道你能帮忙吗?

我有以下代码,并且我已经使用“new”创建了require而没有。两者都有效。但在没有“新”的webstorm中,它抱怨“on”和“pipe”没有得到解决。当然它还在运行......

正确的方法是什么?我看到的大多数示例都没有“新”,但这会导致webstorm和代码完成等问题。

var request = require('request');
var result = new request('http://www.google.com/'); // passing new fixes webstorm

result.pipe(process.stdout);


result.on('data', function(d) {
   console.log('>! data arrived : ' + d);
});

result.on('end', function() {
    console.log('>! end arrived : ');
});

1 个答案:

答案 0 :(得分:1)

我知道,当WebStorm强调正确的代码时,它并不好,但我担心它对Node.js一无所知。

function request (uri, options, callback) {
  if (typeof uri === 'undefined') throw new Error('undefined is not a valid uri or options object.')
  if ((typeof options === 'function') && !callback) callback = options
  if (options && typeof options === 'object') {
    options.uri = uri
  } else if (typeof uri === 'string') {
    options = {uri:uri}
  } else {
    options = uri
  }

  options = copy(options)

  if (callback) options.callback = callback
  var r = new Request(options)
  return r
}

request在内部创建一个新的Request对象,因此使用该函数作为构造函数创建一个仅适用于垃圾收集的对象。

你可以明确地调用new request.Request({uri: '...'})然后看看WebStorm是否安静(我想它会 - 没有尝试过)。当您需要var Request = require('request').Request时,它看起来会更好。

BTW我想知道为什么WebStorm不会抱怨调用一个不是驼峰的构造函数......