基于阿里的Node全栈之路(四)前后端分离进阶-自动上传前端代码到OSS

  1. 云栖社区>
  2. 博客列表>
  3. 正文

基于阿里的Node全栈之路(四)前后端分离进阶-自动上传前端代码到OSS

木木工程师 2017-09-26 03:41:00 浏览3317 评论2

摘要: 上一篇文章提到我们是人工上传构建后的代码的,作为一个自认自动化运维程度算比较高的我,怎么能忍受嘞,怎么也得是自动的吧! 这里,贴出我的自动化上传代码。

上一篇文章提到我们是人工上传构建后的代码的,作为一个自认自动化运维程度算比较高的我,怎么能忍受嘞,怎么也得是自动的吧!

我其实也尝试过github上有人分享过类似的插件,但发现都不能用,而且都很久没维护来,所以,只能自己来搞了。

这里,贴下我的自动上传代码,在www文件创建一个index.js

const fs = require('fs');
const co = require('co');
const path = require('path');
const oss = require('ali-oss');

//构建oss对象
const store = oss({
  accessKeyId: 'accessKeyId',
  accessKeySecret: 'accessKeySecret',
  bucket: 'bucket',
  region: 'oss-cn-shenzhen',
});

(() => {
  const root = path.resolve(__dirname, './dist');
  const files = [];
  //递归取出所有文件夹下所有文件的路径
  function readDirSync(p) {
    const pa = fs.readdirSync(p);
    pa.forEach((e) => {
      const cur_path = `${p}/${e}`;
      const info = fs.statSync(cur_path);
      if (info.isDirectory()) {
        readDirSync(cur_path);
      } else {
        files.push(cur_path);
      }
    });
  }
  readDirSync(root);

  co(function* () {
    //遍历文件
    for (let index = 0; index < files.length; index += 1) {
      const e = files[index];
      const result = yield store.put(e.replace(root, ''), e);
      //提交文件到oss,这里要注意,阿里云不需要创建新文件夹,只有有路径,没有文件夹会自动创建
      console.log(result);
    }
  });
})();

然后再运行

node index.js

用云栖社区APP,舒服~

【云栖快讯】云栖社区技术交流群汇总,阿里巴巴技术专家及云栖社区专家等你加入互动,老铁,了解一下?  详情请点击

网友评论

1F
木木工程师

因为只是每次发布的时候才会用到,所以不要在意里面用了co这些细节啦!

2F
1571010553470220

为什么报错

3F
1571010553470220

(node:13204) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): RequestError: getaddrinfo ENOTFOUND rennana.cn-beijing.aliyuncs.com rennana.cn-beijing.aliyuncs.com:80 (req "error"), PUT http://rennana.cn-beijing.aliyuncs.com/index.html -1 (connected: false, keepalive socket: false, agent status: {"createSocketCount":1,"closeSocketCount":0,"errorSocketCount":0,"timeoutSocketCount":0,"requestCount":0,"freeSockets":{},"sockets":{"rennana.cn-beijing.aliyuncs.com:80::":1},"requests":{}})
headers: {}
(node:13204) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

木木工程师

请求被拒绝,检查下用户是否有访问oss的权限

1571010553470220

已经解决了问题了,谢谢

superxuyuey

@1571010553470220 请问您是如何解决的呢?

评论
木木工程师
文章9篇 | 关注34
关注
Node.js 性能平台(Node.js Performance Platform)是面向中... 查看详情
提供海量、安全和高可靠的云存储服务。RESTful API的平台无关性,容量和处理能力的弹性... 查看详情
一站式提供企业即时通讯、销售管理、协同办公。 查看详情
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效... 查看详情
阿里中间件云大使

阿里中间件云大使