Node.js Error here TypeError[ERR_INVALID_ARG_TYPE]:错误;路径“;参数的类型必须为字符串。接收类型对象

Node.js Error here TypeError[ERR_INVALID_ARG_TYPE]:错误;路径“;参数的类型必须为字符串。接收类型对象,node.js,firebase,google-cloud-functions,google-cloud-storage,firebase-admin,Node.js,Firebase,Google Cloud Functions,Google Cloud Storage,Firebase Admin,您好,我正在尝试使用下面给定的代码将base 64文件从NodeJs上传到firebase存储(googlecloudstorage)。但我得到一个错误的声明 Error here TypeError[ERR\u INVALID\u ARG\u TYPE]:必须使用“path”参数 应为字符串类型。validateString处接收到类型对象 (internal/validators.js:125:11) 代码是: const key = require('../key.json'); cons

您好,我正在尝试使用下面给定的代码将base 64文件从NodeJs上传到firebase存储(googlecloudstorage)。但我得到一个错误的声明

Error here TypeError[ERR\u INVALID\u ARG\u TYPE]:必须使用“path”参数 应为字符串类型。validateString处接收到类型对象 (internal/validators.js:125:11)

代码是:

const key = require('../key.json');
const {Storage} = require('@google-cloud/storage');
//var gcs = require('@google-cloud/storage');
exports.uploadVideo = functions.https.onRequest((req, res) => {

    const gcs =new Storage({
        projectId: "<my-project-id>",
        keyFilename: key
      });

      const bucket = gcs.bucket("example.appspot.com");
      const gcsname = 'test.pdf';
      const file = bucket.file(gcsname);
      var pdfdata = "xNC9YUmVmU3RtIDE1NzQ+Pg0Kc3RhcnR4cmVmDQoyMTY5DQolJUVPRg==";
      var buff = Buffer.from(pdfdata, 'binary').toString('utf-8');
      const stream = file.createWriteStream({
        metadata: {
          contentType: 'application/pdf'
        }
      });

      stream.on('error', (err) => {
        console.log("Error here",err);
      });
      stream.on('finish', () => {
        console.log(gcsname);
      });
      stream.end(new Buffer.from(buff, 'base64'));})
const key=require('../key.json');
const{Storage}=require('@googlecloud/Storage');
//var gcs=require(“@googlecloud/storage”);
exports.uploadVideo=functions.https.onRequest((req,res)=>{
const gcs=新存储({
投射:“,
keyFilename:key
});
const bucket=gcs.bucket(“example.appspot.com”);
const gcsname='test.pdf';
const file=bucket.file(gcsname);
var pdfdata=“xNC9YUmVmU3RtIDE1NzQ+pg0kc3rhcnr4cmdmdqoymty5dqoljuvprg=”;
var buff=Buffer.from(pdfdata,'binary').toString('utf-8');
const stream=file.createWriteStream({
元数据:{
contentType:'应用程序/pdf'
}
});
stream.on('error',(err)=>{
log(“此处出错”,err);
});
stream.on('finish',()=>{
控制台日志(gcsname);
});
stream.end(新的Buffer.from(buff,'base64');})
有人能给我建议一条出路吗?我不明白这个问题。
感谢这意味着程序希望
path
参数的类型为
string
,例如:
“path/to/which”
。您给它一个对象-示例:
{path:“path/to/whatever”}

正如错误所说的“TypeError[ERR\u INVALID\u ARG\u TYPE]:“path”参数必须是string类型。未定义接收”

它试图从path中获取,在查找path时,应该将这些变量添加到.env文件的根目录中。它将获取正确的变量。如果你还有困难,请告诉我


有关更多详细信息,请参阅。

错误本身就是这么说的。但根据文件,应该这样做。另外,我没有给出任何路径,这是由谷歌内部库本身提取的,可能来自文件对象。你能提供指向你所指文档的链接吗?你看到了吗。我想大家都接受的答案是你在寻找的,这是我认为对我有用的来源,但到目前为止还没有成功。而且这不是官方文件。找不到我所需用例的任何正式文档。确定。将代码逐行与您提供的Github示例进行比较。最后一行似乎不同。您的应该更改为
stream.end(新缓冲区(buff,'base64')
您能提供您的package.json文件吗?@google cloud/storage已安装。如果你想找别的东西,我可以把它发出去。@waseemTahir你知道了吗?我也有同样的问题…@Lion789不,很遗憾我不能,而且我有一个很紧的最后期限,所以我在前端实现了它,而没有进一步浪费我的时间。谢谢你的回复,是的,我只是忽略了在gcloud中使用winston