web-dev-qa-db-ja.com

ロールアップエラー: 'isValidElementType'はnode_modules / react-is / index.jsによってエクスポートされません

Styled-componentsを使用して、rollUpでバンドルを構築しています。

私のrollup.config.jsは次のようになります:

import resolve from 'rollup-plugin-node-resolve'
import babel from 'rollup-plugin-babel'
import commonjs from 'rollup-plugin-commonjs'
export default {
  input: 'src/index.js',
  output: {
    file: 'dist/bundle.js',
    format: 'cjs'
  },
  external: [
    'react',
    'react-proptypes'
  ],
  plugins: [
    resolve({
      extensions: [ '.js', '.json', '.jsx' ]
    }),
    commonjs({
      include: 'node_modules/**'
    }),
    babel({
      exclude: 'node_modules/**'
    })
  ]
}

そして、私は受け取っています

[!] Error: 'isValidElementType' is not exported by node_modules/react-is/index.js
https://github.com/rollup/rollup/wiki/Troubleshooting#name-is-not-exported-by-module
node_modules/styled-components/dist/styled-components.es.js (7:9)
5: import stream from 'stream';
6: import PropTypes from 'prop-types';
7: import { isValidElementType } from 'react-is';
            ^
8: import hoistStatics from 'hoist-non-react-statics';

Node_modules自体の反応を確認するのは、チェックアウトできる here であるため、commonjsモジュールです。

Commonjsプラグインはnode_modules/**内にあるので、これを処理すべきではありませんか?

ありがとう。

17
FabioCosta

rollup-plugin-commonjsを使用してこれを解決しました

以下のように、ロールアップ設定でエクスポートを手動で定義します

export default {
  input: 'src/index.js',
  output: [
    {
      file: pkg.main,
      format: 'cjs',
      sourcemap: true
    },
    {
      file: pkg.module,
      format: 'es',
      sourcemap: true
    }
  ],
  plugins: [
    external(),
    postcss({
      modules: true
    }),
    url(),
    babel({
      exclude: 'node_modules/**'
    }),
    resolve(),
    commonjs({
      include: 'node_modules/**',
      namedExports: {
        'node_modules/react-is/index.js': ['isValidElementType']
      }
    })
  ]
}

この後、すべてがうまくいきました。

そして情報については、私の初期セットアップは https://github.com/transitive-bullshit/react-modern-library-boilerplate を介して行われました

それがあなたのために働くことを願っています

23
Martin Ratinaud

上記の修正はうまくいきませんでした。ただし、styled-componentsからrollup.config.js私のために働いた外部とグローバルのリスト。

    export default {
      ...
      external: ['styled-components'],
      ...
      globals: { 'styled-components': 'styled' },
    };

TypeScript create-react-library cliを使用していますが、これはロールアップにバンドルされています。

https://github.com/styled-components/styled-components/issues/9

11
Guentersniden