2016-11-21 3 views
1

я разработал небольшой пакет, доступный hereПосле transpilation из модуля ES6 с WebPack, модуль не экспортируются

В версии src у меня есть экспортный оператор:

export class Select extends React.Component { 
    render() { 
     return (
     ...the component 
     ) 
    } 
} 

Когда я использую этот компонент в эта форма, я могу импортировать его так:

import {Select} from 'select-react-redux';

Однако, после того, как я расслоение р ackage с webpack в каталог lib, я получаю выходной файл, который, как я полагаю, должен иметь тот же контент, что и исходный файл, но ES5 вместо ES6.

Вложенный файл содержит: var Select = exports.Select = function (_React$Component) {} , что означает, что компонент Select должен быть доступен мне, но это не так.

Любая помощь будет очень признательна.

+0

«Выбор не экспортируется из него». --- пожалуйста, покажите, к чему именно это переводится. (поскольку он экспортирует его просто отлично http://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=es2015%2Creact%2Cstage-2&code=export%20class%20Select%20extends%20React.Component%20%7B % 0D% 0A% 20% 20% 20% 20render()% 20% 7B% 0D% 0A% 20% 20% 20% 20% 20% 20% 20% 20return% 20 (% 0D% 0A% 20% 20% 20% 20% 20% 20% 20% 20% 20% 3Cdiv% 3Efoo% 3C% 2Fdiv% 3E% 0D% 0A% 20% 20% 20% 20% 20% 20% 20% 20)% 0D% 0A% 20 % 20% 20% 20% 7D% 0D% 0A% 7D) – zerkms

+0

Вложенная версия файла в комплекте и сведена к минимуму, как здесь: https://github.com/adamgajzlerowicz/ReactSelect/blob/master/lib/index. js – Adam

+0

Пожалуйста, укажите только ** соответствующую часть, не включенную **. – zerkms

ответ

1

В package.json, я вижу, что ваш package's entry point определяется как:

"main": "src/index.js", 

Поскольку вы ES6 код в src/index.js вам потребуется соответствующий загрузчик использовать пакет, как это. Но, проверяя ваши конфигураторы webpack, я обнаружил, что вы уже перекодировали код в lib/index.js. Таким образом, вы должны указать свои пакеты точку входа, как:

"main": "lib/index.js" 
1

экспорта заявления Вы должны быть любым из следующих

export default class Select extends React.Component { 
    render() { 
     return (
     ...the component 
     ) 
    } 
} 

//import 

import Select from 'select-react-redux' 

или

class Select extends React.Component { 
     render() { 
      return (
      ...the component 
      ) 
     } 
    } 

export { 
    Select, 
} 

//import 
import {Select} from 'select-react-redux' 

Надежда это помогает!

0

Благодарим вас за ответы. Они оба правильные, но они не решили проблему для меня. Я потратил два дня на то, чтобы решить проблему, и я уверен, что это проблема с веб-пакетом. Используя те же исходные файлы, но с помощью babel для их компиляции, модули экспортируются правильно.

babel src/ -d lib/

Также я пошел с возможностью экспорта, как это, в корне lib папки в файле index.js. Таким образом, он будет более модульным, если я добавлю дополнительные компоненты.

import {Select} from './Select'; 
export {Select as Select}; 
Смежные вопросы