2016-08-26 11 views
10

Bu, node_modules için yeni bir sürüm grubu yükleyen bir sunucuda npm install yaparken karşılaştığımız bir sorun.Düğüm modülleri sorunu: Modül başına yalnızca bir varsayılan dışa aktarma izni verilir

Biz Biz geliştirme bağımlılıkları yeni bir sürümünü yüklü npm install yapmadan önce iyi çalışmak için kullanılan

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

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

gibi görünen bir modül var.

ARIZA: modül başına izin

Sadece bir varsayılan ihracatı. File.buildCodeFrameError (/home/workspace/node_modules/babel-core/lib/transformation/file/index.js:431:15) adresindeki NodePath.buildCodeFrameError (/ home/workspace/node_modules/babel-traverse/lib/path/index.js: 140: 26) PluginPass.exit'te (/home/workspace/node_modules/babel-plugin-transform-es2015-modules-commonjs/lib/index.js:253:29) newFn'de home/workspace/node_modules/babel-traverse/lib/visitors.js: 276: 21) NodePath._call adresindeki (/home/workspace/node_modules/babel-traverse/lib/path/context.js:76:18) NodePath.call (/home/workspace/node_modules/babel-traverse/lib/path/context.js:48:17) NodePath.visit adresinde (/ home/workspace/node_modules/babel-traverse/lib/path/context .js: 117: 8) TraversalContext.visitQueue'da (/ home/workspace/node_module TraversalContext.visit'te (/ babel-traverse/lib/context.js: 150: 16) TraversalContext.visitSingle (/home/workspace/node_modules/babel-traverse/lib/context.js:108:19) adresindeki (/ home/workspace/node_modules/babel-traverse/lib/context.js: 192: 19) , işlev.traverse.node (/home/workspace/node_modules/babel-traverse/lib/index.js:161:17)

+4

extends değil, iki 'dışa aktarma varsayılanınız olamaz; bu mantıklı değil. Bunlardan biri varsayılan olmalı, muhtemelen mağazaya bağlı olan en son model. – QoP

cevap

13

Bir dosyada birden fazla export default kullanamazsınız. Mantıklı değil. Birden fazla şey ihraç etmek gerekirse Yani ithalat beyanı şu şekilde görünecektir adlı ihracat

DemoComponent.js

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

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

kullanmak gerekir:

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

kullandığınızda export default değişkeninizi istediğiniz gibi isimlendirebilirsiniz ancak dışa aktarma ile aynı değişkeni kullanmalısınız. İhracat yaptığınız gibi ame.

More about export syntax

Btw size örnek bir yazım hatası var. Bu, extend

+0

Teşekkürler Dmitriy Nevzorov. Bunu http://www.2ality.com/2015/12/babel-commonjs.html burada okudum. –

+0

Neyi anlamıyorum, npm_monules'ünü yeniden yükledikten sonra neden bir hata olur? Gerçekten varsayılan bağlantıyı dışa aktarmanız mı gerekiyor? Neden DemoComponent' değil? –

+0

, 'connect' bir [tepki-redux HOC bileşeni] olduğundan (https://github.com/reactjs/react-redux/blob/master/docs/api.md # connectmapstatetoprops-mapdispatchtoprops-mergeprops-options) "DemoComponent" inizi tekrar durumuna getiriyor. Bağlı bir bileşene sahip olmak için dışa aktarmak istiyorsunuz, aksi takdirde "DemoComponent" iniz devlete erişemezdi –

İlgili konular