我想知道你能帮忙吗?
我有以下代码,并且我已经使用“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 : ');
});
答案 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不会抱怨调用一个不是驼峰的构造函数......