React-dnd: CJS模块导入已在最新时间中断

创建于 2019-07-13  ·  29评论  ·  资料来源: react-dnd/react-dnd

描述错误
最新的CJS软件包似乎已损坏(9.3.3)。 使用9.2.1的作品。 请参阅codeandbox或以下日志:

[ 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构建可以正常使用,但是mocha --require @babel/register (即节点环境)给出了同样的错误结果。

同样在[email protected] /dist/cjs生成的分发子树似乎已损坏,我试图通过babel-plugin-module-resolver在babel配置中修改它,就像这样,但没有成功:

  [
    "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你第二次

/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不会尝试从node_modules / react-dnd-cjs / lib / common / DndContext.js:11中的dnd-core导入。

        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)

me脚,我将努力解决发布过程。

您刚刚提交了一些推销路径: https : = christrevino = 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,我还是清理了仓库并能够运行构建。

使用yarn link我可以使事情工作,但似乎已发布的9.3.5软件包仍未包含正确的文件。

CJS构建始终旨在动态生成,因此我不太担心它们中的绝对路径。 无论如何,应该在yarn install上重新生成它们。 它们不在.gitignore中的唯一原因是Lerna无法检测到它们的问题。

@sandorfr构建完成后会看到哪些错误?

我确实看到CJS中缺少类型字段-我将为此做另一个发行

只是上面https://github.com/react-dnd/react-dnd/issues/1468#issuecomment -518488026上的错误,但已通过清理我的仓库解决了。 我猜我安装了纱线然后将其修复。

唯一剩下的问题是,当您检查tarball时,您发布的9.3.5似乎未包含所做的更改,您仍然得到错误的导入。

如果我查看本地构建的软件包,那很好。

我正在从create_packages脚本中删除绝对URL,应该在一分钟内启动

@sandorfr CJS软件包现在在9.3.6发布。

嗯,我不认为发布触发器时正在运行替换脚本。

npm install的内容看起来还不错,我一定在这里误读了一些内容。

好吧,现在尝试:)

仍然是错误的文件...
image

莱娜一定在设置纱环或其他东西-给我一点时间
编辑-是的,将npm安装在另一个目录中可以重现此内容-我将剪切另一个。

多谢您的耐心配合,我们为您连续削减一堆补丁表示歉意。 这些可能应该是预发行版本。

多谢您的耐心配合,我们为您连续削减一堆补丁表示歉意。 这些可能应该是预发行版本。

感谢您的反应性:)我知道这种问题有多痛苦。 所以我可以联系:)

正确的版本是9.3.8?

希望9.3.9-9.3.8没有lib /目录。 prepublishOnly脚本的执行方式有些麻烦。

9.3.9在我看来不错

@martinschayna你第二次

@sandorfr是的,它可以与给定的[email protected][email protected]较旧版本一起使用。 我尚未尝试使用较新的版本,但是我很期待从babel config中删除我的丑陋的hack:slightly_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 等级