Приведение моих readPackageFiles в соответствие с функцией "Parallel"

Мне очень помог этот ТАК вопрос при захвате каталогов и поиске файлов. Я пытаюсь настроить свою функцию readPackageFiles для использования данной мне функции Parallel; однако я изо всех сил пытаюсь это сделать.

Ошибка:

UnhandledPromiseRejectionWarning: TypeError: Cannot use 'in' operator to search for 'throws' in 1
    at readFile (/Users/harwood/udev/dotcom-components/tools/dependency-version-comparison/node_modules/jsonfile/index.js:22:16)
    at Promise (/Users/harwood/udev/dotcom-components/tools/dependency-version-comparison/node_modules/universalify/index.js:13:12)
    at new Promise (<anonymous>)
    at readFile (/Users/harwood/udev/dotcom-components/tools/dependency-version-comparison/node_modules/universalify/index.js:7:14)
    at Array.map (<anonymous>)
    at /Users/harwood/udev/dotcom-components/tools/dependency-version-comparison/dist/index.js:1:1833
    at <anonymous>
(node:70097) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 63)
(node:70097) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
/Users/harwood/udev/dotcom-components/tools/dependency-version-comparison/node_modules/jsonfile/index.js:43
    callback(null, obj)

Вопрос: Как мне настроить readPackageFiles для работы с Parallel?

import {readdir, stat, readJson} from 'fs-extra';
import {join, basename} from 'path';

const Parallel = p =>
  ({
    map: async f =>
      Promise.all((await p).map(f))
    ,
    filter: async f =>
      Promise.all((await p).filter(f))
    ,
    flatMap: async f =>
      Promise.all((await p).map(f)).then(ys => [].concat(...ys))
    ,
  });
const files = async (path = '.') =>
  (await stat(path)).isDirectory()
  ? Parallel(readdir(path))
    .flatMap(f => files(join(path, f)))
  : [path];

const search = async (query, path = ".") =>
  Parallel (files (path))
    .filter (f => basename (f) === query);

// How can I write this to use Parallel    
const readPackageFiles = async (packages) => await Promise.all(packages.map(async x => (await readJson(x))));

// this will not work but it's my attempt

const readPackageFilesNOTWORKING = async(path = ".") =>
  Parallel (search('package.json', path))
    .map (readJson)

Применение:

search('package.json', '.')
  .then(readPackageFiles)
  .then(console.info);
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я надеялся, что вы внимательно изучите связанные вопросы и ответы. Я подозревал, что вам нужно что-то подобное, и эта функция, readPackages, была в первая ссылка, которым я с вами поделился -

const { readFile } =
  require ("fs") .promises

const readPackages = async (path = ".") =>
  Parallel (search ("package.json", path))
    .map (readFile)
    .then
      ( buffers =>
          buffers .map (b => JSON .parse (String (b)))
      )

readPackages (".") .then (console.info, console.error)
// [ ... ]

Обратите внимание, fs-extra не требуется ни в одном из моих ответов.

Другие вопросы по теме