2017-02-20 27 views
0

Я использую create-react-app и у меня есть строка, которая говорит:Как импортировать из подкаталога из node_module?

import createHistory from 'history/lib/createBrowserHistory' 

, но это не работает, и он выдает ошибку:

Error in ./src/deps/history.js. 
Module not found: 'history/lib/createBrowserHistory' 
in /home/aurimus/Apps/projects/my-project/src/deps 

Является ли это специально не поддерживается create-react-app? Как мне обойти это?

*** UPDATE * **

После коррекции на URL в Lib (использует устаревший учебник), я все еще не получаю ничего импортирован, createBrowserHistory является undefined

Я м, используя дополнительный файл абстрагировать import:

Внутри Deps/history.js

import createBrowserHistory from 'history/createBrowserHistory.js' 
export default createBrowserHistory 

Внутри index.js

import history from './deps/history'; 
history.listen(render); // history is undefined 

ли я делаю что-то неправильно?

ответ

2

Is this specifically not supported by create-react-app?

Нет, это не имеет никакого отношения к create-react-app.

How do I circumvent this?

ошибка говорит вам именно то, что проблема:

Module not found: 'history/lib/createBrowserHistory'

Это означает, что history/lib/createBrowserHistory не существует, то вы используете неправильный путь.

Я установил history, посмотрел на содержимое пакета и заметил, что файл createBrowserHistory находится в корневой папке пакета (на самом деле, нет lib/ каталога). Это означает, что вы хотите импортировать history/createBrowserHistory.

+0

Спасибо, это решило не найденную вещь, но теперь она по-прежнему не определена после импорта. Какие-либо предложения? Обновлен вопрос – Aurimas

+0

@Aurimas: Посмотрите файл и проверьте, что он экспортирует и как. 'history' не должен быть' undefined', но 'history.listen', вероятно, есть. Файл экспортирует функцию, а не объект. Функция возвращает объект с свойством 'listen', поэтому вам нужно сначала вызвать функцию.Если вы не знаете, какое значение (и) экспортирует модуль, посмотрите на его источник. –

+0

Если бы вы могли что-то сказать по следующей проблеме: http://stackoverflow.com/questions/42356481/how-to-get-the-last-key-of-object-which-has-a-value/42356657 –

1

От history docs:

Using npm: 

$ npm install --save history 
Then with a module bundler like webpack, use as you would anything else: 

// using ES6 modules 
import createHistory from 'history/createBrowserHistory' 

// using CommonJS modules 
var createHistory = require('history').createBrowserHistory 
0

Мое окончательное решение, которое работало благодаря Феликсу:

В deps/history.js

import createBrowserHistory from 'history/createBrowserHistory.js' 
export default createBrowserHistory() 

Тогда в index.js

import history from './deps/history'; 
... 
... 
history.listen(render);