#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