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



我不知道发生了什么,突然之间,我所有使用glob路径的应用程序都坏了。

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 });

C: 用户项目编写程序 测试用户* * * [sS] pec.js

join函数将所有的斜杠从path转换为反斜杠,但是glob模块不识别带有反斜杠的路径。同样的事情也发生在TypeORM中,使用底层path模块中的normalize函数。

const allFiles = directories.reduce((allDirs, dir) => {
return allDirs.concat(glob_1.default.sync(PlatformTools_1.PlatformTools.pathNormalize(dir)));
}, []);

奇怪的是,以前一切都是可行的。我不知道它到底是什么时候停止工作的,但它确实停止了。

我也遇到过类似的问题。

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

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

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

使用以下2个选项,路径将为

选项1:

./folder/file.js

dotRelative以"/">

选项2:

posix将'\'替换为'/'

glob.sync(globPatterns, { posix: true, dotRelative: true })

最新更新