【问题标题】:Unexpected behaviour of glob-fs glob.readdirSyncglob-fs glob.readdirSync 的意外行为
【发布时间】:2018-09-19 21:53:25
【问题描述】:

我有以下nodejs 代码。客户端首先调用/api/demosounds,然后调用/api/testsounds

var glob = require('glob-fs')({ gitignore: true });
app.get('/api/demosounds',function(req,res){
        var demosounds = []
        var demosoundlist = glob.readdirSync('src/assets/demosounds/*.wav');
        demosounds = demosounds.concat(demosoundlist)
        for (var i = 0; i < demosounds.length; i++) {
           demosounds[i] =  demosounds[i].replace("src/assets/","/api/static/")
        }
        demosounds = demosounds.sort()
        res.json(demosounds)
        })

app.get('/api/testsounds',function(req,res){
    var listofsounds = []
    var folderlist = ['01_sinus','02_pulse_train','03_contour_le','04_contour_fel','05_variable','06_complex_le','07_complex_fel']

    for (var x = 0; x < folderlist.length; x++){
          var testsoundlist = glob.readdirSync('src/assets/' + folderlist[x] +'/*.wav');

          listofsounds = listofsounds.concat(testsoundlist)
    }

在执行glob.readdirSync('src/assets/01_sinus/*.wav') 时,我希望只获得以src/assets/01_sinus/ 开头的路径,而testsoundlist 开头如下:

[ 'src/assets/demosounds/electricity.wav',
  'src/assets/demosounds/phone.wav',
  'src/assets/demosounds/water.wav',
  'src/assets/demosounds/wind.wav',
  'src/assets/01_sinus/02_sin1_0065_0.16923076923076924.wav',
  'src/assets/01_sinus/04_sin1_0065_0.7692307692307693.wav',
  'src/assets/01_sinus/05_sin1_0065_1.0615384615384615.wav',
  'src/assets/01_sinus/07_sin1_0165_0.07272727272727272.wav',

我不知道为什么会这样:(

更新

有点接近问题,下面的代码

var glob = require('glob-fs')({ gitignore: true });
var folderlist = ['01_sinus','02_pulse_train','03_contour_le','04_contour_fel','05_variable','06_complex_le','07_complex_fel']
for (var x = 0; x < folderlist.length; x++){
          console.log((glob.readdirSync('src/assets/' + folderlist[x] +'/*.wav').length))
      }

输出这个,好像 glob 会记住以前的 glob。

49
98
147
196
245
294
343

【问题讨论】:

    标签: javascript node.js glob


    【解决方案1】:

    该库似乎不再维护,并且有一个挂起的issue 与完全相同的问题,所以看起来这是一个错误。

    在这种情况下,解决方案是简单地使用globglob.sync()

    【讨论】:

      猜你喜欢
      • 2014-07-01
      • 2020-10-04
      • 2016-07-16
      • 2016-05-10
      • 2020-07-23
      • 2021-08-23
      • 2021-11-16
      • 2017-10-20
      • 2016-06-29
      相关资源
      最近更新 更多