Я только что исправил ошибку, изменив import * as CodeMirror
на простое import CodeMirror
.Разница между ES2015 `import * as` vs просто« import »
- Я скопировал this code. (Портирование его из TypeScript)
import * as CodeMirror
работал, пока аддон не был импортирован для его побочных эффектов: ожидаемое новое свойствоfold
не определено.
Вопросы: (Я пытаюсь понять, что произошло лучше)
- Что происходит? Как это изменение исправить ошибку?
- Кто добавляет свойство
default
в CodeMirror? (Или более вероятно: обертывание модуль внутри другого объекта, который выглядит очень похоже) Наиболее вероятными подозреваемыми:- JavaScript модули (ES2015)
- Бабель
- Webpack
- CoffeeScript
- CodeMirror
- Есть ли лучший способ достичь того, чего я пытался достичь?
Подробнее:
Этот код не работает, как ожидалось:
import * as CodeMirror from 'codemirror'
import 'codemirror/addon/fold/indent-fold.js' # should add `fold` object to `CodeMirror`
console.log typeof CodeMirror ## 'object'
console.log typeof CodeMirror.fold ## 'undefined'
console.log typeof CodeMirror.default ## 'function'
## Work-around:
console.log typeof CodeMirror.default.fold ## 'object'
Этот код работает, как ожидалось:
import CodeMirror from 'codemirror'
import 'codemirror/addon/fold/indent-fold.js' # should add `fold` object to `CodeMirror`
console.log typeof CodeMirror ## 'function'
console.log typeof CodeMirror.fold ## 'object'
console.log typeof CodeMirror.default ## 'undefined'
я уже изучал эти ресурсы, но они не помогли мне в полной мере понять, что случилось:
Нормально ли, что это свойство 'CodeMirror.default' в результате 'import * как CodeMirror из 'codemirror''? Я не думаю, что 'codemirror' явно назвал экспорт под названием« default » – Leftium
У них, вероятно, есть экспорт по умолчанию, помеченный как« экспорт по умолчанию », и я думаю, когда вы делаете импорт подстановочных знаков, который входит под ключ' default' , –