0

对不起,我没有在其他地方发布这个。

这是我的汇总配置

import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import babel from 'rollup-plugin-babel';
import { terser } from 'rollup-plugin-terser';
import pkg from './package.json';

export default {
  input: 'src/index.js',
  external: ['react', 'react-dom', 'prop-types'],
  output: [
    { file: pkg.main, format: 'cjs', exports: 'named' },
    { file: pkg.module, format: 'es', exports: 'named' },
  ],
  plugins: [
    resolve(),
    commonjs({
      include: 'node_modules/**',
    }),
    babel({
      exclude: 'node_modules/**',
    }),
    terser(),
  ],
};

这是我项目的完整源代码https://github.com/withvoid/melting-pot

它发布在 npmjs https://www.npmjs.com/package/@withvoid/melting-pot

我的问题是,如果我将它添加到https://github.com/facebook/create-react-app项目中,我的库会很好用,但是当我将它添加到代码沙盒项目中时

https://codesandbox.io/s/6lqzp7q28w

它给了我一个错误

Invariant Violation Hooks 只能在函数组件的主体内部调用。

我似乎无法弄清楚这是代码沙盒问题(我对此表示怀疑)还是我的汇总配置问题。

4

1 回答 1

2

问题是大熔炉将“react”和“react-dom”指定为dependencies,但它们应该指定为peerDependencies。这具有将 React 拉入两次并产生不良影响的效果。如果我完全从沙箱中删除 react 依赖项,它会起作用,因为 React 只会被拉入一次(通过熔炉)。显然这不是适当的解决方案,但它是验证错误原因的快速方法。

于 2019-02-03T21:53:46.303 回答