React-dnd: A importação do módulo CJS foi interrompida no último

Criado em 13 jul. 2019  ·  29Comentários  ·  Fonte: react-dnd/react-dnd

Descreva o bug
Os pacotes CJS mais recentes parecem estar corrompidos (9.3.3). Usar 9.2.1 funciona. Veja codesandbox ou o log abaixo:

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

Reprodução

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

bug

Comentários muito úteis

Estou fora até o dia 20 - fique à vontade para reabrir se o problema persistir. Obrigado!

Todos 29 comentários

+1, em meu cenário webpack build funciona bem com mocha --require @babel/register (isto é, ambiente de nó) dá o mesmo resultado defeituoso.

Além disso, a subárvore de distribuição gerada por /dist/cjs em [email protected] parece estar quebrada, tentei hackear isso na configuração do babel via babel-plugin-module-resolver assim, mas sem sucesso:

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

Resumindo, esta reescrita abaixo funciona em webpack (com [email protected] ) e também em mocha (com [email protected] ) sem alterações no código-fonte do aplicativo:

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

Enfrentando esse mesmo problema.

Eu também encontrei isso

@martinschayna seu segundo

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

Também notei que 9.3.3 não foi publicado para todos os pacotes. Isso parece um pouco estranho @darthtrevino ?

Eu fiz mais pesquisas em torno disso,

Parece que .d.ts não foram corrigidos (não tenho certeza por que neste ponto as regras scripts/execute_cjs_replacements.js parecem boas para mim).

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

Acredito que falte uma regra em scripts / execute_cjs_replacements.js para substituir importações em arquivos js também. Portanto, DndContext.js não tenta importar de dnd-core em 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, vou tentar consertar o processo de liberação.

Você acabou de comprometer algum caminho aboluto: 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.

Limpei meu repo e consegui executar a compilação, apesar do tsconfig.

Usando o yarn link, posso fazer algo funcionar, mas parece que os pacotes 9.3.5 publicados ainda não incluem os arquivos corretos.

Os builds do CJS sempre foram feitos para serem gerados dinamicamente, então não estou muito preocupado com os caminhos absolutos neles. Em yarn install eles devem ser regenerados de qualquer maneira. A única razão pela qual eles não estão em .gitignore foi por causa de um problema com Lerna não sendo capaz de detectá-los se estivessem.

@sandorfr que tipos de erros você vê após a conclusão da compilação?

Vejo que falta o campo de digitação no CJS - farei outro lançamento para isso

Apenas o erro acima https://github.com/react-dnd/react-dnd/issues/1468#issuecomment -518488026, mas foi resolvido limpando meu repo. Eu acho que a instalação do fio que fiz então consertei.

O único problema remanescente é que o 9.3.5 que você publicou não parece incluir as alterações quando você inspeciona o tarball e ainda obtém as importações erradas.

Se eu olhar meus pacotes construídos localmente, eles estão bem.

Estou removendo os URLs absolutos do script create_packages, ele deve estar pronto em um minuto

@sandorfr Os pacotes CJS estão sendo publicados agora em 9.3.6

Hmm, não acho que o script de substituição esteja sendo executado quando a publicação for acionada.

O conteúdo da instalação do npm parece bom, devo ter interpretado mal algo lá.

Ok, tentando agora :)

ainda são os arquivos errados ...
image

Lerna deve estar configurando laços de fios ou algo assim - me dê um minuto
Editar - sim, instalar com npm em outro diretório reproduz isso - cortarei outro ..

Obrigado pela sua paciência, peço desculpas por cortar um monte de patches em uma fileira. Provavelmente deveriam ter sido pré-lançamentos.

Obrigado pela sua paciência, peço desculpas por cortar um monte de patches em uma fileira. Provavelmente deveriam ter sido pré-lançamentos.

Obrigado pela reatividade :) Eu sei como esse tipo de problema é doloroso. Então eu posso relacionar :)

a versão correta será 9.3.8?

9.3.9 com sorte - 9.3.8 não tem diretórios lib /. Algo estava errado com a forma como o script prepublishOnly estava sendo executado.

9.3.9 parece bom do meu lado

@martinschayna seu segundo

@sandorfr sim, funciona com versões anteriores de [email protected] e [email protected] instaladas. Eu não tentei ainda com versões mais recentes, mas estou ansioso para remover meu hack feio da configuração do babel: ligeiramente_smiling_face:

9.3.9 parece bom do meu lado

Parece bom 💃. Eu definitivamente saberei assim que o CI for concluído :)

Estou fora até o dia 20 - fique à vontade para reabrir se o problema persistir. Obrigado!

Você pode publicar no npm? O último disponível é 9.3.4 a partir de hoje https://www.npmjs.com/package/react-dnd

Você pode publicar no npm? O último disponível é 9.3.4 a partir de hoje https://www.npmjs.com/package/react-dnd

a correção em questão só se aplica / afeta as versões cjs: https://www.npmjs.com/package/react-dnd-cjs

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

dwjohnston picture dwjohnston  ·  3Comentários

dreamcog picture dreamcog  ·  4Comentários

BrennanRoberts picture BrennanRoberts  ·  3Comentários

rubayethossain picture rubayethossain  ·  3Comentários

TheBolliwood picture TheBolliwood  ·  3Comentários