Node.js Nodejs fs.createReadStream可以';t读取Firebase存储下载URL“;eNote:没有这样的文件或目录;

Node.js Nodejs fs.createReadStream可以';t读取Firebase存储下载URL“;eNote:没有这样的文件或目录;,node.js,firebase-storage,Node.js,Firebase Storage,forfs.createReadStream(path)表示它可以读取URL: path|| 文档显示了路径周围的引号: fs.createReadStream('/dev/input/event0'); 但当我把这个Firebase存储下载URL fs.createReadStream('https://firebasestorage.googleapis.com/v0/b/languagetwo-cd94d.appspot.com/o/Users%2FbcmrZDO0X5N6kB38Mq

for
fs.createReadStream(path)
表示它可以读取URL:

path||
文档显示了路径周围的引号:

fs.createReadStream('/dev/input/event0');
但当我把这个Firebase存储下载URL

fs.createReadStream('https://firebasestorage.googleapis.com/v0/b/languagetwo-cd94d.appspot.com/o/Users%2FbcmrZDO0X5N6kB38MqhUJZ11OzA3%2Faudio-file.flac?alt=media&token=871b9401-c6af-4c38-aaf3-889bb5952d0e’,
我收到错误消息
enoint:没有这样的文件或目录
。您可以单击URL并听到它的工作原理:

我还尝试了Google存储URI:

fs.createReadStream('gs://languagetwo-cd94d.appspot.com/Users/bcmrZDO0X5N6kB38MqhUJZ11OzA3/audio file.flac'),
那没用。我是否必须使用
https.request
发出HTTP GET请求

这是我的完整代码,复制自:

const fs=require('fs');
const SpeechToTextV1=require('ibm-watson/speech-to-text/v1');
const{iamsauthenticator}=require('ibm-watson/auth');
const speechToText=新建speechtotexv1({
验证器:新验证器({
apikey:“我的api密钥”,
}),
网址:'https://api.us-south.speech-to-text.watson.cloud.ibm.com/instances/01010101',
});
变量参数={
音频:fs.createReadStream('https://firebasestorage.googleapis.com/v0/b/languagetwo-cd94d.appspot.com/o/Users%2FbcmrZDO0X5N6kB38MqhUJZ11OzA3%2Faudio-file.flac?alt=media&token=871b9401-c6af-4c38-aaf3-889bb5952d0e’,
contentType:'audio/flac',
WordAlternativeThreshold:0.9,
关键词:[“科罗拉多”,“龙卷风”,“龙卷风”],
关键词阈值:0.5,
};
speechToText.Recognite(参数)
。然后(结果=>{
log(JSON.stringify(results,null,2));
})
.catch(错误=>{
log('error:',err);
});
如果您看到,它清楚地提到它只支持
文件://
协议。不支持
http/https

我不建议使用
请求
请求承诺
,因为它们已被弃用。我建议使用一些现代库,如
got
axios
等。

如果您看到,它清楚地提到它只支持
文件://
协议。不支持
http/https


我不建议使用
请求
请求承诺
,因为它们已被弃用。我建议使用一些现代库,如
get
axios
等。

要获取文件,必须打开一个写流,然后通过管道将http库(本例中的axios)的输出传输到该流

这将更好地为您服务:


常量Fs=require('Fs')
const Path=require('路径')
常量Axios=require('Axios')
异步函数下载映像(){
常量url=https://unsplash.com/photos/AaEQmoufHLk/download?force=true'
const path=path.resolve(_dirname,'images','code.jpg'))
常量writer=Fs.createWriteStream(路径)
常数响应=等待Axios({
网址,
方法:“GET”,
响应类型:'stream'
})
response.data.pipe(编写器)
返回新承诺((解决、拒绝)=>{
writer.on('finish',resolve)
writer.on('错误',拒绝)
})
}

要获取文件,必须打开一个写流,然后通过管道将http库(本例中为axios)的输出传输到该流

这将更好地为您服务:


常量Fs=require('Fs')
const Path=require('路径')
常量Axios=require('Axios')
异步函数下载映像(){
常量url=https://unsplash.com/photos/AaEQmoufHLk/download?force=true'
const path=path.resolve(_dirname,'images','code.jpg'))
常量writer=Fs.createWriteStream(路径)
常数响应=等待Axios({
网址,
方法:“GET”,
响应类型:'stream'
})
response.data.pipe(编写器)
返回新承诺((解决、拒绝)=>{
writer.on('finish',resolve)
writer.on('错误',拒绝)
})
}

我问的另一个问题也回答了这个问题。Axios不仅可以获取文件,还可以对其进行流式处理,从而消除了
fs.createReadStream

我问的另一个问题也回答了这个问题。Axios不仅可以获取文件,还可以对其进行流式处理,从而消除了
fs.createReadStream

如果您有HTTP URL,则应该使用HTTP库来获取它,例如“请求”或“请求承诺”。如果你有一个HTTP URL,你应该使用HTTP库来获取它,比如“请求”或“请求承诺”。fs不会有帮助的。感谢您的快速响应
Get
不起作用,因为它使用了
函数*
生成器,而Google云函数使用的是没有生成器的旧版本节点。我将尝试
axios
。感谢您的快速响应
Get
不起作用,因为它使用了
函数*
生成器,而Google云函数使用的是没有生成器的旧版本节点。我将尝试
axios