Быстрая синхронизация глобуса, возвращающая пустой массив при использовании с конечной точкой api

#node.js #typescript #glob

Вопрос:

Я звоню fg.sync(globPatterns, { cwd : someWD } , чтобы получить файлы в каталоге. но он возвращает пустой массив. Однако выполнение fg.sync('*') возвращает результат.

Я зарегистрировал шаблон и wd, взял точные параметры и запустил их в узле repl. что дало желаемый результат. Почему-то это просто не работает внутри конечной точки api. (Я использую fastify)

Также возможно process.cwd() , что он изменен, вероятно, из-за других команд shelljs, но cwd, который я передаю, является абсолютным путем.

Я тестирую на Windows. Я подозреваю, что это проблема с тем, что я нахожусь в Windows, или какая-то проблема с разрешениями. Я передаю пути в формате posix, и он работает в узле repl, поэтому я не думаю, что он может быть первым.

Может быть, что-то связанное с машинописным текстом?

Ответ №1:

Просто передайте {cwd: __dirname, root: __dirname} , чтобы избежать всех проблем с путем, чтобы вы могли быть уверены, что он всегда выполняется из этого конкретного файла. На тебя нельзя положиться cwd .

Комментарии:

1. Я вызываю fast-glob, например fg.snyc(['src/*', 'index.html'], { cwd: ABSOLUTE_PATH_TO_FOLDER, root: ABSOLUTE_PATH_TO_FOLDER } , там, где путь в формате posix, он все равно возвращает пустой массив в моем узле env. Хотя он правильно работает в узле repl. что меня совершенно сбивает с толку.

2. Также извините за поздний ответ, был заблокирован еще одной ошибкой.

3. А, ладно. Тогда все, о чем я могу думать, если звездочка работает, — это то, что шаблон глобуса, который вы используете, неверен. Вы пробовали » /абсолютный/путь/**/*», часть » * / «должна соответствовать всем файлам, или вы можете сделать» */ . ts» или что-то еще. Может быть, дело в самой схеме.

4. Кроме того, вместо того, чтобы использовать абсолютный путь в «cwd», вместо этого просто используйте glob.sync('**/*.ts', {cwd: __dirname}) , чтобы он выполнялся из вызывающего его файла. Извините, мое предыдущее сообщение * было удалено из-за того, что оно не было зашифровано, я не понял. Я говорил использовать **/* или **/*.ts .

5. быстрый глобус должен соответствовать файлам, fg.sync('*') работает fg.sync('*", { cwd: ABSOLUTE_PATH_TO_FOLDER, root: ABSOLUTE_PATH_TO_FOLDER }) не работает. Однако все это работает, если я использую в сеансе repl узла, то есть если я набираю узел в оболочке. Я не использую глобус, вместо этого я использую быстрый глобус npmjs.com/package/fast-glob