React-dnd: Импорт модуля CJS нарушен на последнем

Созданный на 13 июл. 2019  ·  29Комментарии  ·  Источник: react-dnd/react-dnd

Опишите ошибку
Последние пакеты CJS кажутся неработающими (9.3.3). Использование 9.2.1 работает. См. Коды и журнал ниже:

[ error ] ./node_modules/react-dnd-cjs/lib/common/DndContext.js
Module not found: Can't resolve 'dnd-core' in '/mnt/c/dev/foobar/app/node_modules/react-dnd-cjs/lib/common'
{ Error: Cannot find module 'dnd-core'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)

Размножение

https://codesandbox.io/embed/wonderful-turing-mqywk

Самый полезный комментарий

Я выхожу до 20го числа - не стесняйтесь открывать его снова, если проблема не исчезнет. Благодаря!

Все 29 Комментарий

+1, в моем сценарии webpack build отлично работает, но mocha --require @babel/register (т.е. среда узла) дает такой же ошибочный результат.

Также /dist/cjs сгенерированное поддерево распространения в [email protected] кажется сломанным, я пытался взломать это в конфигурации babel через babel-plugin-module-resolver точно так же, но безуспешно:

  [
    "babel-plugin-module-resolver",
    {
      alias: {
        "^react-dnd$": "\\0/dist/cjs",
        "^react-dnd-.*$": "\\0/dist/cjs",
        "^dnd-.*$": "\\0/dist/cjs"
      }
    }
  ]

Короче говоря, приведенное ниже переписывание работает в webpack[email protected] ), а также в mocha[email protected] ) без изменений в исходном коде приложения:

  [
    "babel-plugin-module-resolver",
    {
      alias: {
        "^react-dnd$": "\\0-cjs"
      }
    }
  ]

Столкнувшись с этой же проблемой.

Я тоже сталкивался с этим

@martinschayna у тебя второй отрезок работал? Я попробовал пару вещей, которые у меня либо получаются Не могу найти dnd-core, либо

/node_modules/dnd-core/dist/esm/index.js:1
(function (exports, require, module, __filename, __dirname) { export * from './interfaces';

Также я заметил, что версия 9.3.3 опубликована не для всех пакетов. Это кажется немного странным @darthtrevino ?

Я еще немного покопался в этом,

Похоже, что .d.ts не исправлены (не знаю, почему на данный момент, поскольку правила scripts/execute_cjs_replacements.js мне нравятся).

process module requires in /Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd
*.d.ts require replacement [ { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/common/DndContext.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/common/DndProvider.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/common/DragPreviewImage.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/common/DragSourceMonitorImpl.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/common/DropTargetMonitorImpl.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/common/index.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/common/registration.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/common/SourceConnector.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/common/TargetConnector.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/common/wrapConnectorHooks.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/decorators/createSourceFactory.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/decorators/createTargetFactory.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/decorators/decorateHandler.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/decorators/disposables.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/decorators/DragLayer.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/decorators/DragSource.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/decorators/DropTarget.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/decorators/index.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/decorators/interfaces.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/decorators/utils.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/hooks/index.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/hooks/internal/drag.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/hooks/internal/drop.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/hooks/internal/useCollector.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/hooks/internal/useDragDropManager.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/hooks/internal/useMonitorOutput.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/hooks/useDrag.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/hooks/useDragLayer.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/hooks/useDrop.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/index.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/interfaces/connectors.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/interfaces/hooksApi.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/interfaces/index.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/interfaces/monitors.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/interfaces/options.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/utils/cloneWithRef.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/utils/isRef.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/utils/isValidType.js',
    hasChanged: false },
  { file:
     '/Users/cautexier/projects/react-dnd/packages/alternative_builds/cjs/react-dnd/lib/utils/js_utils.js',
    hasChanged: false } ]
js from replacement []
*.d.ts from from replacement []
*.d.ts from import replacement []

Я считаю, что в scripts / execute_cjs_replacements.js отсутствует правило для замены импорта в файлах js. Таким образом, DndContext.js не пытается импортировать из dnd-core в node_modules / response-dnd-cjs / lib / common / DndContext.js: 11.

        let jsFromReplaceSpec = {
            files: `${file}/lib/**/*.js`,
            from: esmLibs.map(esmLib => new RegExp(`from '${esmLib}'`, 'g')),
            to: esmLibs.map(esmLib => `from '${esmLib}-cjs'`),
        }
        replace.sync(jsFromReplaceSpec)

Хромой, возьмусь за исправление процесса релиза.

Вы только что совершили какой-то абсолютный путь: https://github.com/react-dnd/react-dnd/search?q=christrevino&unscoped_q=christrevino

yarn build
yarn run v1.15.2
$ tsc
error TS6053: File '/Users/christrevino/Workspace/oss/react-dnd/packages/core/react-dnd/src/index.ts' not found.


Found 1 error.

error Command failed with exit code 2.

Я очистил свое репо и смог запустить сборку, несмотря на tsconfig.

Используя ссылку пряжи, я могу заставить что-то работать, но кажется, что опубликованные пакеты 9.3.5 по-прежнему не включают правильные файлы.

Сборки CJS всегда создавались динамически, поэтому я не слишком беспокоюсь об абсолютных путях в них. На yarn install они все равно должны быть регенерированы. Единственная причина, по которой они не находятся в .gitignore, заключалась в том, что Лерна не могла их обнаружить, если бы они были.

@sandorfr Какие ошибки вы видите после завершения сборки?

Я вижу, что в CJS отсутствует поле typings - я сделаю еще одну версию для этого

Просто ошибка выше https://github.com/react-dnd/react-dnd/issues/1468#issuecomment -518488026, но она была решена очисткой моего репо. Я предполагаю, что установка пряжи, которую я сделал, затем исправила.

Единственная оставшаяся проблема заключается в том, что опубликованная вами версия 9.3.5, похоже, не включает изменений, когда вы проверяете архив, вы все равно получаете неправильный импорт.

Если я посмотрю на свои локально созданные пакеты, они в порядке.

Я удаляю абсолютные URL-адреса из скрипта create_packages, он должен появиться через минуту

@sandorfr Пакеты CJS публикуются в версии 9.3.6.

Хм, я не думаю, что сценарий замены запускается, когда срабатывает публикация.

Содержимое npm install выглядит нормально, должно быть, я что-то неправильно прочитал.

Хорошо, попробуй сейчас :)

это все еще не те файлы ...
image

Лерна, должно быть, устанавливает связи пряжи или что-то в этом роде - дай мне минутку
Изменить - да, установка с помощью npm в другой каталог воспроизводит это - я вырежу еще один ..

Спасибо за терпение, прошу прощения, что вырезал кучу патчей подряд. Вероятно, это должны были быть предварительные релизы.

Спасибо за терпение, прошу прощения, что вырезал кучу патчей подряд. Вероятно, это должны были быть предварительные релизы.

Спасибо за реакцию :) Я знаю, насколько болезненны подобные вопросы. Так что я могу понять :)

правильная версия будет 9.3.8?

9.3.9 надеюсь - 9.3.8 не имеет lib / каталогов. Что-то было не так с тем, как выполнялся сценарий PreublishOnly.

9.3.9 хорошо смотрится с моей стороны

@martinschayna у тебя второй отрезок работал? Я попробовал пару вещей, которые у меня либо получаются Не могу найти dnd-core, либо

@sandorfr да, он работает с установленными более старыми версиями [email protected] и [email protected] . Я еще не пробовал это с более новыми версиями, но я с нетерпением жду возможности удалить свой уродливый хак из конфигурации babel: слегка_smiling_face:

9.3.9 хорошо смотрится с моей стороны

Выглядит неплохо 💃. Я точно буду знать, когда CI завершится :)

Я выхожу до 20го числа - не стесняйтесь открывать его снова, если проблема не исчезнет. Благодаря!

Вы можете опубликовать на npm? Самая последняя доступная версия - 9.3.4 на сегодняшний день https://www.npmjs.com/package/react-dnd

Вы можете опубликовать на npm? Самая последняя доступная версия - 9.3.4 на сегодняшний день https://www.npmjs.com/package/react-dnd

рассматриваемое исправление применяется / влияет только на выпуски cjs: https://www.npmjs.com/package/react-dnd-cjs

Была ли эта страница полезной?
0 / 5 - 0 рейтинги