使用node.js和Glob将多个文件从Google云VM上载到Google云存储

使用node.js和Glob将多个文件从Google云VM上载到Google云存储,node.js,api,npm,google-cloud-storage,glob,Node.js,Api,Npm,Google Cloud Storage,Glob,我正在尝试Node.js将多个文件从我的Google Compute Engine VM本地目录上载到我已经创建的GCS存储桶。每次运行脚本时都会出现以下错误 TypeError[ERR\u INVALID\u ARG\u TYPE]:“path”参数必须是string类型。接收类型功能 剧本: `//导入Google云客户端库 const{Storage}=require('@googlecloud/Storage'); 常数fs=要求('fs'); 常量glob=require('glob

我正在尝试Node.js将多个文件从我的Google Compute Engine VM本地目录上载到我已经创建的GCS存储桶。每次运行脚本时都会出现以下错误

TypeError[ERR\u INVALID\u ARG\u TYPE]:“path”参数必须是string类型。接收类型功能

剧本:

`//导入Google云客户端库
const{Storage}=require('@googlecloud/Storage');
常数fs=要求('fs');
常量glob=require('glob');
//要访问的存储桶的名称,例如“我的存储桶”
const bucketName=“myBucket”;
//实例化客户机
常量存储=新存储({
projectId:'myprojectID',
keyFilename:“我的GCS服务密钥”
});
//获取虚拟机本地目录中的文件
var allfiles=glob('folder/*.js',函数(err,files){
如果(错误){
控制台日志(err);
}  
});
//将VM本地目录文件上载到bucket
存储
.bucket(bucketName)
.上传(所有文件)
.然后(()=>{
log(`${allfiles}上传到${bucketName}.`);
})
.catch(错误=>{
console.error('error:',err);

});'
您的错误是使用
所有文件
作为
全局
的返回值。这是不正确的,文件名在回调中可用(因为glob是异步的),而不是在返回值中

glob('folder/*.js', function (err, files) { 
    if (err) { 
        console.log(err); 
    }

    var allfiles = files;

    // Uploads VM local dir files  to the bucket
   storage
  .bucket(bucketName)
  .upload(allfiles)
  .then(() => {
    console.log(`${allfiles} uploaded to ${bucketName}.`);
  })
  .catch(err => {
    console.error('ERROR:', err);
  });'  
});

所以,我终于让剧本发挥作用了。问题是,文件路径被捕获为对象,但Google云存储服务需要路径作为字符串

然后必须使用JSON.stringify将路径更改为字符串,然后拆分resuting数组以仅选择文件路径内容

//导入Google云客户端库
const{Storage}=require('@googlecloud/Storage');
常数fs=要求('fs');
var bucketName='预期GCS bucketName';	
常量存储=新存储({
projectId:'完整项目Id',keyFilename:'云服务密钥'
});
//调用Glob以读取本地/虚拟机中的文件路径
var glob=需要(“glob”);
glob('本地/vm目录的路径',函数(错误,文件){
如果(错误){
控制台日志(err);
}    
var list=JSON.stringify(文件);
list=list.split(“”);
var listone=list[1];
存储
.bucket(bucketName)
.上传(列表一)
.然后(()=>{
log(`${listone}上传到${bucketName}.`);
})
.catch(错误=>{
console.error('error:',err);
});  

})
Hi@mihai,非常感谢您的回答。我相信它设置了正确的代码上下文,但在实施您的建议后,我仍然会遇到相同的错误。
console.log(allfiles)
print是什么?它将优先于文件路径。您确定您会遇到相同的错误而不是其他错误吗?