关于Node使用OSS上传返回result返回Object [Generator] {}

关于OSS上传返回result返回Object [Generator] {}

node下运行如下代码

const OSS = require('ali-oss')
var path = require("path")

const client = new OSS({
  // yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
  region: 'yourregion',
  // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  accessKeyId: 'yourAccessKeyId',
  accessKeySecret: 'yourAccessKeySecret',
  // 填写Bucket名称。
  bucket: 'examplebucket',
});

async function put () {
  try {
    // 填写Object完整路径和本地文件的完整路径。Object完整路径中不能包含Bucket名称。
    // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
    let result = await client.put('exampleobject.txt', path.normalize('/localpath/examplefile.txt'));
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

put();        

result返回 Object [Generator] {} 。 await并没有起到作用导致代码client并没有先执行所以获取不到OOS的地址。但是这个代码在Egg框架可以正常执行。原生node却有问题。。。。。。就离谱

原生NodeJS OSS上传文件的解决方案

主要使用ES6中的 yield 解决异步回调

const OSS = require('ali-oss')
var path = require("path")
const co = require("co");

 async  put(){
        let client = new OSS({
            // yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
            region: 'yourregion',
            // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
            accessKeyId: 'yourAccessKeyId',
            accessKeySecret: 'yourAccessKeySecret',
            // 填写Bucket名称。
            bucket: 'examplebucket',
        });
        co(function* () {
           let resultCo = yield client.put('exampleobject.txt', path.normalize('/localpath/examplefile.txt'));
           console.log(resultCo);
        }).catch(function (err) {
           console.log(err);
        });
     }
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值