Я собираюсь ответить на этот вопрос немного по-другому, без использования resolve.root. Все, что сказал @dresyecat, верны. Тем не менее, я просто прошел одно и то же упражнение, перемещаясь от относительных путей всюду к модульным путям. Here is the doc, который объясняет три разных типа путей, которые вы можете использовать в инструкции import.
Вы просите использовать путь к модулю, который, по моему мнению, является предпочтительным способом.
Проблема заключается в том, что по умолчанию пути модулей работают только с вещами, импортированными через npm, поскольку новые модули переменной по умолчанию по умолчанию имеют значение ["node_modules"]. Это позволяет вам легко импортировать сторонний код из npm. Но это означает, что для импорта вашего кода с помощью пути к модулю требуется изменение конфигурации. BTW, модули в предыдущих версиях назывался moduleDirectories. Here are the docs для конфигурации конфигурации разрешения.
Хорошо если у вас есть структура каталогов вроде этого:
project/
webpack.config.json
js/
components
actions
Вы можете установить каталог модулей быть:
resolve: {
extensions: [ '.ts', '.js', '*' ],
modules: [ path.resolve(__dirname, "js"), "node_modules"]
}
Пару важных моментов:
- Будьте уверены, включить «node_modules», если вы используете npm для вытягивания стороннего кода, или ваш импорт из них начнет сбой
Обязательно импортируйте компонент пути в вашу конфигурацию, чтобы определить путь
var path = require ('path');
Затем вы можете использовать следующее (как было указано - без ведущего /), чтобы импортировать компоненты, используя форму пути.Модуль:
import "actions/fooAction";
Есть (что чувствует себя) сотни Stack Вопросы переполнения, которые задают практически ту же самую вещь, а также десятки различных страниц документации Webpack и NONE OF THEM, объясняют эту невероятно простую концепцию даже наполовину так же четко, как и вы. Спасибо (и оспа на людей в Интернете, чтобы так сложно найти ответ)! – machineghost
Может ли он быть установлен в './' и иметь все относительно корневой папки проекта? – JoeTidee
@JoeTidee - нет, это относительно текущего файла – toobulkeh