web-dev-qa-db-ja.com

Nodeモジュールの問題:モジュールごとに許可されるデフォルトのエクスポートは1つだけです

これは、node_modulesの新しいバージョンのセットをロードするサーバーでnpm installを実行中に直面した問題です。

次のようなモジュールがあります

export default class DemoComponent extend React.Component {
  render() {
    return(
      <h1>Hello</h1>
    );
  }
}

export default connect(
  mapStateToProps,
  { ... }
)(DemoComponent);

開発依存関係の新しいバージョンをロードするnpm installを実行する前は、以前は正常に機能していました。

エラーログ:

モジュールごとに許可されるデフォルトのエクスポートは1つだけです。 File.buildCodeFrameError(/home/workspace/node_modules/babel-core/lib/transformation/file/index.js:431:15)at NodePath.buildCodeFrameError(/ home/workspace/node_modules/babel-traverse/lib/path/index.js:140:26)at PluginPass.exit(/home/workspace/node_modules/babel-plugin-transform-es2015-modules-commonjs/lib/index.js:253:29)at newFn(/ home/workspace/NodePath._call(/home/workspace/node_modules/babel-traverse/lib/path/context.js:76:18)at NodePath.call(/のnode_modules/babel-traverse/lib/visitors.js:276:21) nodePath.visit(/home/workspace/node_modules/babel-traverse/lib/path/context.js:117:8)にあるhome/workspace/node_modules/babel-traverse/lib/path/context.js:48:17) TraversalContext.visitQueue(/home/workspace/node_modules/babel-traverse/lib/context.js:150:16)at TraversalContext.visitSingle(/home/workspace/node_modules/babel-traverse/lib/context.js:108: 19)TraversalContext.visit(/home/workspace/node_modules/babel-traverse/lib/context.js:192:19)at Function.traverse.node(/ ho me/workspace/node_modules/babel-traverse/lib/index.js:161:17)

10
Abhay Nikam

1つのファイルで複数のexport defaultを使用することはできません。それは意味がありません。複数のものをエクスポートする必要がある場合は、named exportを使用する必要があります

DemoComponent.js

export class DemoComponent extends React.Component {
  render() {
    return(
      <h1>Hello</h1>
    );
  }
}

export default connect(
  mapStateToProps,
  { ... }
)(DemoComponent);

したがって、importステートメントは次のようになります。

import ConnectedComponent, {DemoComponent} from './DemoComponent';

export defaultを使用すると、変数に任意の名前を付けることができますが、named exportを使用すると、変数名と同じ変数名を使用する必要がありますエクスポートします。

エクスポート構文の詳細

ところで、あなたの例ではタイプミスがあります。 extendsではなくextendです

14