使用带有 Formik 的 Rollup.JS 的外部库不尊重命名导出

Squ*_*gs. 7 reactjs rollupjs formik

我正在使用 Rollup 将表单组件的共享库放在一起,该库使用 Formik 作为基础层。我目前收到以下“调度程序”的编译错误,它由 Formik 在后台使用。

我尝试将它作为单独的 npm 依赖项手动安装,但仍然出现以下错误。

[!] Error: 'unstable_runWithPriority' is not exported by node_modules/formik/node_modules/scheduler/index.js
https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module
node_modules/formik/dist/formik.esm.js (9:9)
 7: import toPath from 'lodash-es/toPath';
 8: import invariant from 'tiny-warning';
 9: import { unstable_runWithPriority, LowPriority } from 'scheduler';
Run Code Online (Sandbox Code Playgroud)

遵循汇总文档:我尝试使用 rollup.config.js 的命名导出部分,例如:

plugins: [


    peerDepsExternal(),
    postcss({ extract: true, plugins: [autoprefixer] }),
    json({  include: 'node_modules/**' }),
    babel({ exclude: 'node_modules/**', presets: ['@babel/env', '@babel/preset-react'] }),
    localResolve(),
    resolve({dedupe: [ 'react', 'react-dom' ]}),
    commonjs({
      namedExports: {
        // left-hand side can be an absolute path, a path
        // relative to the current directory, or the name
        // of a module in node_modules
        'node_modules/formik/node_modules/scheduler/index.js': ['unstable_runWithPriority'],
        'scheduler': ['unstable_runWithPriority'],
        'node_modules/scheduler': ['unstable_runWithPriority'],
        './node_modules/scheduler': ['unstable_runWithPriority'],
        '../node_modules/formik/node_modules/scheduler/index.js': ['unstable_runWithPriority']
      }
    }),
    globals(),
    externals(),
    builtins(),
    filesize()

  ]
Run Code Online (Sandbox Code Playgroud)

如您所见,我已经尝试了一些目的地/路径以进行良好的衡量。谁能指出我如何重新编译的正确方向?或者如何正确定义我的命名导出?我在网上阅读了一些问题,这些问题表明插件数组的顺序可能会影响事情,但我交换了一些,但我仍然不知所措。

Squ*_*gs. 5

您可能认为地球上没有人会犯同样的晦涩错误。你错了。找到了解决办法。(这与插件的顺序有关)

plugins: [
    globals(),
    builtins(),
    externals(),
    babel({ exclude: 'node_modules/**', presets: ['@babel/env', '@babel/preset-react'] }),
    commonjs({
      namedExports: {
        // left-hand side can be an absolute path, a path
        // relative to the current directory, or the name
        // of a module in node_modules
        'node_modules/formik/node_modules/scheduler/index.js' : ['unstable_runWithPriority'],
      }
    }),
    peerDepsExternal(),
    postcss({ extract: true, plugins: [autoprefixer] }),
    json({  include: 'node_modules/**' }),
    localResolve(),
    resolve({dedupe: [ 'react', 'react-dom' ]}),
    filesize()

  ]
Run Code Online (Sandbox Code Playgroud)