【问题标题】:Fast glob sync returning empty array when used with api endpoint与 api 端点一起使用时,快速 glob 同步返回空数组
【发布时间】:2021-08-12 20:09:10
【问题描述】:

我正在调用fg.sync(globPatterns, { cwd : someWD } 来获取目录中的文件。但它返回一个空数组。但是,运行 fg.sync('*') 确实会返回结果。

我记录了模式和 wd 并获取了确切的参数并在节点 repl 中运行它。它返回了我想要的结果。不知何故,它只是在 api 端点内不起作用。 (我用的是 fastify)

也可能process.cwd()被修改可能是因为其他shelljs命令,但我传递的cwd是绝对路径。

我正在 Windows 上进行测试。我怀疑这是我在 Windows 上的问题,或者是一些权限问题。我以 posix 格式传递路径,它在节点 repl 中工作,所以我不认为它可能是第一个。

可能与打字稿有关吗?

【问题讨论】:

    标签: node.js typescript glob


    【解决方案1】:

    只需传递{cwd: __dirname, root: __dirname} 即可避免所有路径问题,因此您可以确保它始终从该特定文件执行。你不能依赖cwd

    【讨论】:

    • 我正在调用类似fg.snyc(['src/*', 'index.html'], { cwd: ABSOLUTE_PATH_TO_FOLDER, root: ABSOLUTE_PATH_TO_FOLDER } 的fast-glob,其中路径为posix 格式,它仍然在我的节点环境中返回一个空数组。虽然它在节点 repl 中正常工作。这让我很困惑。
    • 也很抱歉回复晚了,被另一个错误阻止了。
    • 啊,好吧。那么我能想到的星号是否有效是您使用的 glob 模式不正确。你试过'/absolute/path/**/*'吗,'*/'部分是匹配所有文件,或者你可以做'*/.ts ' 管他呢。也许是模式本身。
    • 另外,不要在“cwd”上使用绝对路径,而是使用glob.sync('**/*.ts', {cwd: __dirname}),以便它从调用它的文件中执行。抱歉,我之前的消息* 因未编写代码而被删除,没有意识到。我是说使用**/***/*.ts
    • 快速 glob 应该匹配文件,fg.sync('*') 有效 fg.sync('*", { cwd: ABSOLUTE_PATH_TO_FOLDER, root: ABSOLUTE_PATH_TO_FOLDER }) 无效。但是,如果我在 node repl 会话中使用所有这些工作,也就是说,如果我在 shell 中键入 node。我没有使用 glob,而是使用快速 glob npmjs.com/package/fast-glob
    猜你喜欢
    • 2019-08-26
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 2012-03-21
    • 2019-11-12
    • 1970-01-01
    相关资源
    最近更新 更多