2017-01-05 1 views
0

я делаю следующий (оба экспортированных являются объекты):Экспорт несколько модулей ES6 - При импорте, все модули находятся в пределах первого я «шелушиться»

SlateInfo.js

export default {SlateRules, SlateSchema};

, а затем в другом файле

import {SlateRules, SlateSchema} from 'SlateInfo';

B у, что я получаю то, что SlateRules определяются как объект, содержащего SlateRules и SlateSchema

SlateSchema остаются неопределенными.

Где я ошибаюсь/что я недопонимаю?

+0

Оба 'SlateRules' и' SlateSchema' должны быть 'undefined' в вашем примере, если вы также не экспортируете' SlateRules'. –

+0

Я получаю те же результаты, если я использую 'export {SlateRules, SlateSchema}', где оба экспорта в конечном итоге импортируются в 'SlateRules' – Slbox

+0

Возможно, вы импортируете из неправильного модуля? Если экспорт находится в вашем собственном файле, он должен быть чем-то вроде '... from './Path/to/SlateInfo''. –

ответ

3

import {SlateRules, SlateSchema} from 'SlateInfo'; предназначенный для импорта Иконный экспорт. Однако export default {SlateRules, SlateSchema}; является по умолчанию export, exporting object with two properties.

Если вы хотите именованный экспорт, то вам необходимо опустить default:

export {SlateRules, SlateSchema}; 

Или использовать импорт в по умолчанию и destructure объекта:

import SlateInfo from 'SlateInfo'; 
const {SlateRules, SlateSchema} = SlateInfo; 

When should I use curly braces for ES6 import? имеет много примеров, показывающих, как работают именованные и дефолтные экспортные операции.

+0

Спасибо за ваш ответ. К сожалению, я попробовал это без дефолта по экспорту, и это приводит к тому же. – Slbox

+0

Мне не пришло в голову, чтобы они вставляли их в consts, но так как мне это нужно в различных файлах, я бы хотел избежать этого метода, если это возможно. – Slbox

+0

Я также попробовал 'export const SlateRules = {}' и 'export const SlateSchema = {}' с теми же результатами, если я правильно помню. – Slbox

Смежные вопросы