React-dnd: L'importation du module CJS est interrompue le dernier

Créé le 13 juil. 2019  ·  29Commentaires  ·  Source: react-dnd/react-dnd

Décrivez le bogue
Les derniers packages CJS semblent être défectueux (9.3.3). L'utilisation de 9.2.1 fonctionne. Voir codesandbox ou le journal ci-dessous:

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

la reproduction

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

bug

Commentaire le plus utile

Je suis absent jusqu'au 20 - n'hésitez pas à le rouvrir si le problème persiste. Merci!

Tous les 29 commentaires

+1, dans mon scénario webpack build fonctionne bien avec mais mocha --require @babel/register (c'est-à-dire l'environnement de nœud) donne le même résultat défectueux.

De plus, le sous-arbre de distribution généré par /dist/cjs dans [email protected] semble être cassé, j'ai essayé de pirater cela dans la configuration de babel via babel-plugin-module-resolver juste comme ça mais sans succès:

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

Pour faire court, cette réécriture ci-dessous fonctionne en webpack (avec [email protected] ) et aussi en mocha (avec [email protected] ) sans changements dans le code source de l'application:

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

Face à ce même problème.

Je suis tombé sur ça aussi

@martinschayna avez-vous travaillé la deuxième fois? J'ai essayé quelques trucs que j'ai soit impossible de trouver dnd-core, soit

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

J'ai également remarqué que 9.3.3 n'a pas été publié pour tous les paquets. Cela semble un peu bizarre @darthtrevino ?

J'ai encore creusé autour de ça,

Il semble que .d.ts ne soient pas corrigés, (je ne sais pas pourquoi à ce stade, car les règles scripts/execute_cjs_replacements.js me semblent bonnes).

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

Je pense qu'il manque une règle dans scripts / execute_cjs_replacements.js pour remplacer également les importations dans les fichiers js. Donc DndContext.js n'essaye pas d'importer depuis dnd-core dans node_modules / react-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)

Lame, je vais essayer de réparer le processus de publication.

Vous venez de valider un chemin abolu: 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.

J'ai nettoyé mon dépôt et j'ai pu exécuter la compilation malgré le tsconfig.

En utilisant le lien yarn, je peux faire fonctionner quelque chose, mais il semble que les paquets 9.3.5 publiés n'incluent toujours pas les fichiers corrects.

Les builds CJS ont toujours été conçus pour être générés dynamiquement, je ne suis donc pas trop préoccupé par les chemins absolus qu'ils contiennent. Sur yarn install ils devraient quand même être régénérés. La seule raison pour laquelle ils ne sont pas dans .gitignore était à cause d'un problème avec Lerna ne pouvant pas les détecter s'ils l'étaient.

@sandorfr Quels types d'erreurs voyez-vous une fois la construction terminée?

Je vois que le champ de typages est manquant dans le CJS - je vais faire une autre version pour cela

Juste l'erreur ci-dessus https://github.com/react-dnd/react-dnd/issues/1468#issuecomment -518488026, mais elle a été résolue en nettoyant mon repo. Je suppose que l'installation de fil que j'ai faite ensuite l'a corrigée.

Le seul problème restant est que le 9.3.5 que vous avez publié ne semble pas inclure les modifications lorsque vous inspectez l'archive tar, vous obtenez toujours les mauvaises importations.

Si je regarde mes packages construits localement, ils vont bien.

Je supprime les URL absolues du script create_packages, cela devrait être en place dans une minute

@sandorfr Les packages CJS sont maintenant publiés à la version 9.3.6

Hmm, je ne pense pas que le script de remplacement soit exécuté lorsque la publication se déclenche.

Le contenu de l'installation de npm semble correct, j'ai du mal interpréter quelque chose.

Ok, essayez-le maintenant :)

ce sont toujours les mauvais fichiers ...
image

Lerna doit créer des liens de fil ou quelque chose comme ça - donnez-moi une minute
Edit - oui, l'installation avec npm dans un autre répertoire reproduit ceci - je vais en couper un autre ..

Merci pour votre patience, je m'excuse d'avoir coupé un tas de patchs d'affilée. Celles-ci auraient probablement dû être des avant-premières.

Merci pour votre patience, je m'excuse d'avoir coupé un tas de patchs d'affilée. Celles-ci auraient probablement dû être des avant-premières.

Merci pour la réactivité :) Je sais à quel point ce genre de problème est douloureux. Donc je peux raconter :)

la version correcte sera 9.3.8?

Espérons que 9.3.9 - 9.3.8 n'a pas de répertoires lib /. Il y a eu un problème avec la façon dont le script prépublishOnly s'exécutait.

9.3.9 me semble bien de mon côté

@martinschayna avez-vous travaillé la deuxième fois? J'ai essayé quelques trucs que j'ai soit impossible de trouver dnd-core, soit

@sandorfr oui, cela fonctionne avec les anciennes versions de [email protected] et [email protected] installées. Je ne l'ai pas encore essayé avec des versions plus récentes, mais j'ai hâte de supprimer mon horrible hack de babel config: légèrement_smiling_face:

9.3.9 me semble bien de mon côté

Ça a l'air bien 💃. Je le saurai définitivement une fois le CI terminé :)

Je suis absent jusqu'au 20 - n'hésitez pas à le rouvrir si le problème persiste. Merci!

Pouvez-vous publier sur npm? Le dernier disponible est la version 9.3.4 à partir d'aujourd'hui https://www.npmjs.com/package/react-dnd

Pouvez-vous publier sur npm? Le dernier disponible est la version 9.3.4 à partir d'aujourd'hui https://www.npmjs.com/package/react-dnd

le correctif en question s'applique / affecte uniquement les versions de cjs: https://www.npmjs.com/package/react-dnd-cjs

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

BrennanRoberts picture BrennanRoberts  ·  3Commentaires

dreamcog picture dreamcog  ·  4Commentaires

gocreating picture gocreating  ·  4Commentaires

redochka picture redochka  ·  3Commentaires

dwjohnston picture dwjohnston  ·  3Commentaires