glob 路径在我的 Windows 环境中不起作用

Mül*_*ito 3 windows glob path node.js

我不知道发生了什么,突然间,我所有使用全局路径的应用程序都崩溃了。

Jasmine、TypeORM 以及任何我需要通过 glob 模式指定目录的库都无法在我的 Windows 上运行。

我深入研究了那些试图解决这个问题的库。我发现库使用一些路径模块的函数(例如 join 和 normalize)来处理路径,然后再将它们传递给 glob 模块。让我展示 Jasmine 库中的代码片段:

 includeFiles.forEach(function(file) {
      if(!(path.isAbsolute && path.isAbsolute(file))) {
        file = path.join(jasmineRunner.projectBaseDir, jasmineRunner.specDir, file);
      }
      
      var filePaths = glob.sync(file, { ignore: excludeFiles });
Run Code Online (Sandbox Code Playgroud)

C:\Users\User\Programmation\project\test***[sS]pec.js

join 函数将路径中的所有斜杠转换为反斜杠,但 glob 模块无法识别带有反斜杠的路径。使用底层路径模块中的标准化函数的 TypeORM 也会发生同样的事情。

const allFiles = directories.reduce((allDirs, dir) => {

        return allDirs.concat(glob_1.default.sync(PlatformTools_1.PlatformTools.pathNormalize(dir)));
    }, []);
Run Code Online (Sandbox Code Playgroud)

奇怪的是,以前一切都有效。我不知道它什么时候停止工作的,但确实如此。

Yon*_*aor 5

我遇到了类似的问题。

在深入研究 TypeORM 代码后,我意识到问题出在glob库上。

glob窗口分隔符有问题。我最终像这样更换了分隔符:

entities: [
   (__dirname+"\\..\\entities\\**\\*.entity{.ts,.js}").replace(/\\/g,'/')
],
Run Code Online (Sandbox Code Playgroud)