全局路径在Windows环境中不起作用

wwwo4jvm  于 2023-06-24  发布在  Windows
关注(0)|答案(2)|浏览(144)

我不知道发生了什么事,突然间,我所有使用全局路径的应用程序都坏了。
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:\Users\User\Programmation\project\test*[sS] pec.js
join函数将path中的所有斜杠转换为反斜杠,但glob模块无法识别带有反斜杠的路径。TypeORM使用路径模块中的normalize函数也会发生同样的事情。

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

        return allDirs.concat(glob_1.default.sync(PlatformTools_1.PlatformTools.pathNormalize(dir)));
    }, []);

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

ecr0jaav

ecr0jaav1#

我遇到了类似的问题。
在深入挖掘TypeORM代码后,我意识到问题出在glob库上。
glob的windows分隔符有问题。最后我把分离器替换成这样:

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

6ljaweal2#

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

./folder/file.js

dotRelative以“./”开头的url
备选方案二:
posix将'\'替换为'/'

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

相关问题