Javascript fs.stats节点JS

Javascript fs.stats节点JS,javascript,node.js,fs,Javascript,Node.js,Fs,我需要比较两个文件的大小。如果第一个大于第二个,则返回一个;如果大小相等,则返回零,否则返回-1。 我写了一个我无法通过的测试: test('compareFileSizes', (done) => { const filepath1 = `${__dirname}/../Makefile`; const filepath2 = `${__dirname}/test.js`; compareFileSizes(filepath1, filepath2, (_error1, re

我需要比较两个文件的大小。如果第一个大于第二个,则返回一个;如果大小相等,则返回零,否则返回-1。 我写了一个我无法通过的测试:

test('compareFileSizes', (done) => {
  const filepath1 = `${__dirname}/../Makefile`;
  const filepath2 = `${__dirname}/test.js`;
  compareFileSizes(filepath1, filepath2, (_error1, result) => {
    expect(result).toBe(-1);
    done();
  });
});
我的代码:

import fs from 'fs';
export const compareFileSizes = (file1, file2, cb) => {
  fs.stat(file1, (_err, stats1) => {
    let size1 = stats1.size;
    cb(_err, size1);
  fs.stat(file2, (_err, stats2) => {
    let size2 = stats2.size;
    cb(_err, size2);
    if(size1 > size2){
      return Math.sign(1);
    } else if(size1 === size2){
      return Math.sign(0);
    } else{
      return Math.sign(-1);
    }
  })
  })
该函数不返回所需的内容。该走哪条路,或者如何正确切割算法?
};

这不是容易多了吗

import fs from 'fs';
export const compareFileSizes = (file1, file2) => {
  let size1 = fs.statSync(file1).size;
  let size2 = fs.statSync(file2).size;
  return Math.sign(size1 - size2);
})

根本不需要回调?

如果不想阻止执行线程,则不能使用
fs.statSync
,在回调的帮助下,代码将如下所示:

从“fs”导入fs;
export const compareFileSizes=(文件1、文件2、cb)=>{
fs.stat(文件1,(错误,stats1)=>{
如果(错误){
控制台错误(error);
返回cb(错误);
}
const size1=stats1.size;
fs.stat(文件2,(err,stats2)=>{
如果(错误){
控制台错误(err);
返回cb(错误);
}
const size2=stats2.size;
常量结果=数学符号(大小1-大小2);
返回cb(空,结果);
});
})
}

也许可以尝试使用
fs.statSync
简化您的代码,以避免任何意外的回调行为?当然需要