React-dnd: Der Import von CJS-Modulen ist spätestens unterbrochen

Erstellt am 13. Juli 2019  ·  29Kommentare  ·  Quelle: react-dnd/react-dnd

Beschreibe den Fehler
Die neuesten CJS-Pakete scheinen defekt zu sein (9.3.3). Die Verwendung von 9.2.1 funktioniert. Siehe Codesandbox oder das folgende Protokoll:

[ 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)

Reproduktion

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

bug

Hilfreichster Kommentar

Ich bin bis zum 20. aus - zögern Sie nicht, dies erneut zu öffnen, wenn das Problem weiterhin besteht. Vielen Dank!

Alle 29 Kommentare

+1, in meinem Szenario funktioniert webpack Build gut mit, aber mocha --require @babel/register (dh Knotenumgebung) liefert das gleiche fehlerhafte Ergebnis.

Auch /dist/cjs generierter Distributions-Teilbaum in [email protected] scheint kaputt zu sein. Ich habe versucht, dies in der Babel-Konfiguration über babel-plugin-module-resolver zu hacken, aber ohne Erfolg:

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

Kurz gesagt, dieser Umschreibbalg funktioniert in webpack (mit [email protected] ) und auch in mocha (mit [email protected] ) ohne Änderungen im Quellcode der Anwendung:

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

Vor dem gleichen Problem.

Ich bin auch darauf gestoßen

@martinschayna hast du als zweites geschnippt gearbeitet? Ich habe ein paar Dinge ausprobiert, die ich entweder bekomme. Kann dnd-core nicht finden oder

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

Außerdem habe ich festgestellt, dass 9.3.3 nicht für alle Pakete veröffentlicht wurde. Das scheint ein bisschen komisch @darthtrevino ?

Ich habe noch ein bisschen danach gegraben,

Es scheint, dass .d.ts nicht gepatcht sind (nicht sicher, warum dies zu diesem Zeitpunkt so ist, da die scripts/execute_cjs_replacements.js -Regeln für mich gut aussehen).

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 []

Ich glaube, in scripts / execute_cjs_replacements.js fehlt eine Regel, um auch Importe in js-Dateien zu ersetzen. Daher versucht DndContext.js nicht, aus dnd-core in node_modules / react-dnd-cjs / lib / common / DndContext.js: 11 zu importieren.

        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)

Lahm, ich werde den Release-Prozess korrigieren.

Sie haben gerade einen absoluten Pfad festgelegt: 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.

Ich habe mein Repo bereinigt und konnte den Build trotz tsconfig ausführen.

Mit Garn Link kann etwas funktionieren, aber es scheint, dass die veröffentlichten 9.3.5-Pakete immer noch nicht die richtigen Dateien enthalten.

Die CJS-Builds sollten immer dynamisch generiert werden, daher mache ich mir keine Sorgen um die absoluten Pfade in ihnen. Auf yarn install sollten sie trotzdem neu generiert werden. Der einzige Grund, warum sie nicht in .gitignore sind, war ein Problem damit, dass Lerna sie nicht erkennen konnte, wenn sie es waren.

@sandorfr Welche Arten von Fehlern sehen Sie nach Abschluss Ihres

Ich sehe, dass das Eingabefeld im CJS fehlt - ich werde dafür eine weitere Version machen

Nur der Fehler über https://github.com/react-dnd/react-dnd/issues/1468#issuecomment -518488026, aber er wurde durch Bereinigen meines Repos behoben. Ich denke, die Garninstallation, die ich gemacht habe, hat sie dann repariert.

Das einzige verbleibende Problem ist, dass die von Ihnen veröffentlichte Version 9.3.5 die Änderungen nicht zu enthalten scheint, wenn Sie den Tarball überprüfen. Sie erhalten immer noch die falschen Importe.

Wenn ich mir meine lokal erstellten Pakete ansehe, sind sie in Ordnung.

Ich entferne die absoluten URLs aus dem Skript create_packages. Es sollte in einer Minute verfügbar sein

@sandorfr Die CJS-Pakete werden jetzt um 9.3.6 veröffentlicht

Hmm, ich glaube nicht, dass das Ersatzskript ausgeführt wird, wenn die Veröffentlichung ausgelöst wird.

Der Inhalt der npm-Installation sieht in Ordnung aus, ich muss dort etwas falsch gelesen haben.

Ok, versuche es jetzt :)

Es sind immer noch die falschen Dateien ...
image

Lerna muss Garnverbindungen aufbauen oder so - gib mir eine Minute
Bearbeiten - ja, die Installation mit npm in einem anderen Verzeichnis reproduziert dies - ich schneide ein anderes.

Vielen Dank für Ihre Geduld. Ich entschuldige mich dafür, dass Sie ein paar Patches hintereinander geschnitten haben. Dies sollten wahrscheinlich Vorabversionen gewesen sein.

Vielen Dank für Ihre Geduld. Ich entschuldige mich dafür, dass Sie ein paar Patches hintereinander geschnitten haben. Dies sollten wahrscheinlich Vorabversionen gewesen sein.

Danke für die Reaktivität :) Ich weiß, wie schmerzhaft diese Art von Problem ist. Also kann ich erzählen :)

die richtige Version wird 9.3.8 sein?

9.3.9 hoffentlich - 9.3.8 hat keine lib / Verzeichnisse. Es wurde etwas mit der Ausführung des Skripts prepublishOnly zu tun.

9.3.9 sieht für mich gut aus

@martinschayna hast du als zweites geschnippt gearbeitet? Ich habe ein paar Dinge ausprobiert, die ich entweder bekomme. Kann dnd-core nicht finden oder

@sandorfr Ja, es funktioniert mit bestimmten älteren Versionen von [email protected] und [email protected] installiert. Ich habe es noch nicht mit neueren Versionen versucht, aber ich freue mich darauf, meinen hässlichen Hack aus babel config zu entfernen: leicht_smiling_face:

9.3.9 sieht für mich gut aus

Es sieht gut aus 💃. Ich werde es definitiv wissen, sobald das CI fertig ist :)

Ich bin bis zum 20. aus - zögern Sie nicht, dies erneut zu öffnen, wenn das Problem weiterhin besteht. Vielen Dank!

Können Sie auf npm veröffentlichen? Der letzte verfügbare Stand ist 9.3.4 ab heute https://www.npmjs.com/package/react-dnd

Können Sie auf npm veröffentlichen? Der letzte verfügbare Stand ist 9.3.4 ab heute https://www.npmjs.com/package/react-dnd

Der betreffende Fix gilt nur für cjs-Versionen: https://www.npmjs.com/package/react-dnd-cjs

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen