Итак, одна из главных причин, по которой я был сбит с толку, заключается в том, что существует множество устаревших руководств по модулям ES6. На самом деле, многие из лучших результатов в Google, похоже, устарели. Я смотрел на такие руководства, как this , this и this , и все они сказали, что вы можете импортировать из имени модуля без указания пути, например
import { double } from 'mymodule';
Они называются "голыми" спецификаторами импорта , и в руководствах сказано, что по умолчанию будет выполняться поиск в текущем каталоге соответствующего модуля. Однако, похоже, что сейчас они не поддерживаются в браузерах .
Там, где это очень запутанно, это то, что они поддерживаются в BabelJS и Webpack, но это следует другому соглашению. Например, Webpack ищет пути , указанные в resolve.modules
, которые по умолчанию включают в себя папку node_modules
. Вот почему Create-React-App пример может использовать такие выражения, как
import React from 'react';
Похоже, что план на будущее состоит в том, чтобы позволить среде определить, как разрешить эти "голые" спецификаторы ( Source ). Кажется опасным, что каждая среда по-разному разрешает эти спецификаторы, что может затруднить создание кросс-совместимых модулей, но я думаю, что это текущий план на данный момент.