#node.js #typescript
#node.js #typescript
Вопрос:
Я немного борюсь с импортом и использованием модуля npm recursive-readdir в программе typescript.
После npm install recursive-readdir @types/recursive-readdir
(@types/recursive-readdir@2.2.0 , recursive-readdir@2.2.2 ) работает следующий фрагмент:
import * as RecursiveReaddir from 'recursive-readdir';
async function test () {
const files = await RecursiveReaddir.default('/tmp');
...
}
Файл node_modules/@types/recursive-readdir/index.d.ts
содержит:
...
import * as fs from "fs";
declare namespace RecursiveReaddir {
type IgnoreFunction = (file: string, stats: fs.Stats) => boolean;
type Ignores = ReadonlyArray<string|IgnoreFunction>;
type Callback = (error: Error, files: string[]) => void;
interface readDir {
(path: string, ignores?: Ignores): Promise<string[]>;
(path: string, callback: Callback): void;
(path: string, ignores: Ignores, callback: Callback): void;
}
}
declare var recursiveReadDir: RecursiveReaddir.readDir;
export = recursiveReadDir;
Мои вопросы:
- Откуда берется функция
RecursiveReaddir.default(...)
? - Возможен ли более понятный и интуитивно понятный импорт и использование?
В примереìmport { readDir } from 'recursive-readdir';
или что-то в этом роде?
Тестовая программа доступна в:
https://github.com/ManfredSteiner/stackovf_65391266
Ответ №1:
Я получил ошибку в вашем коде. (node:7541) UnhandledPromiseRejectionWarning: TypeError: RecursiveReaddir.default is not a function
Итак, я реализовал его для работы, обратившись к существующим тестовым кодам. Смотрите ниже
test.ts
// ./test.ts
import recursive from 'recursive-readdir';
async function test () {
const files = await recursive(__dirname);
console.log(files);
}
test()
команды
# node v12.13.1
# npm v6.11.3
npm install @types/recursive-readdir amp;amp;
npm install recursive-readdir
@types/recursive-readdir@2.2.0
recursive-readdir@2.2.2
tsc amp;amp; node ./build/test.js
Результаты
# Success
[ '/Users/kmk/Project/src/github.com/myeongkil/tmp/stackoverflow/recursive-readdir/build/test.js' ]
Комментарии:
1. Я снова пытаюсь создать фрагмент с нуля.
RecursiveReaddir.default()
переносится и работает, но я заменяю__dirname
на/tmp
. Я также вижу, что ваше «решение»import recursive from 'recursive-readdir';
работает. Но почему? Я не могу видетьrecursive
в файлеindex.d.ts
. Оба решения остаются для меня странными.2. Я добавляю репозиторий тестовой программы, см. https://github.com/ManfredSteiner/stackovf_65391266