问题-解决

172 阅读1分钟

1. Nginx-跨域配置

add_header Access-Control-Allow-Origin $http_origin; # nginx版本<1.7.5时候须加 always
# add_header Access-Control-Allow-Origin $http_origin always; # nginx版本<1.7.5时候须加 always

add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Headers Origin,X-Requested-Width,Content-Type,Accept,accessToken; # accessToken 是程序需要的token名
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
add_header Access-Control-Max-Age 1728000;
if ($request_method = 'OPTIONS') {
    return 204;
}

2. JS-去除数组相同的项

function unique(arr) {
  var result = [],
    hash = {};
  for (var i = 0, elem; (elem = arr[i]) != null; i++) {
    if (!hash[elem]) {
      result.push(elem);
      hash[elem] = true;
    }
  }
  return result;
}

3. nodejs获取设备唯一码

const wmic = require('node-wmic');
(async ()=>{
   var [item]= await wmic.BIOS();
    console.log("BIOS.SerialNumber="+item.SerialNumber);
    [item]= await wmic.CPU();
    console.log("CPU.ProcessorId="+item.ProcessorId);
    item= await wmic.DiskDrive();
    console.log("DiskDrive[0].SerialNumber="+item[0].SerialNumber);
    [item]= await wmic.CSProduct();
    console.log("CSProduct.UUID="+item.UUID);
})()

4. NodeJs使用阿里云OOS问题及解决

1. 批量下载文件超时

  • 下载完一个在进行下一个下载,不要使用forEach循环遍历下载

2. 循环遍历下载OOS文件代码

let client = new OSS({
  region: `${region}`,
  accessKeyId: `${accessKeyId}`,
  accessKeySecret: ${accessKeySecret},
  bucket: `${bucket}`,
  secure: true,
});
await list();
async function list() {
  try {
    let result = await client.list({
      "max-keys": 1000,
      prefix: originUrl + "/data",
    });
    let { objects = [] } = result;
    await mkdirSync(tmpDir + originUrl + "/data"); // 生成本地目录
    await getList(objects);
  } catch (err) {
    self.sendFail(err);
  }
}
async function getList(objects = [], i = 0) {
  if (!objects[i]) return;
  let oName = objects[i].name;
  let localFile = path.join(tmpDir, oName).replace(/\\/g, "/");
  try {
    await client.get(oName, localFile);
    await getList(objects, ++i);
  } catch (error) {
    self.sendFail(error);
  }
}