Webstorm ES6 с именем import import не может разрешить ошибку символа
У меня есть ошибка в Webstorm при использовании имени импорта ES6 с именем import:
import { nodes } from 'utils/dom';
Я получаю ошибку "не могу разрешить символ" на "узлах"
Также, когда я пытаюсь экспортировать как указанный экспорт, выполните следующие действия:
export {
write: document.write.bind(document),
node: document.querySelector.bind(document),
nodes: document.querySelectorAll.bind(document)
};
Я тоже получаю ошибки.
Я использую eslint с парсером babel-eslint.
Дело в том, что это работает в Sublime Text 3 как шарм, но по какой-то причине не удается проверить ошибку в Webstorm.
Я предполагаю, что это происходит из-за того, что кроме веб-буфера Eslint выполняется другая проверка кода.
Любая идея, как я могу подавить это и использовать только eslint с парсером babel-eslint?
Любые советы будут оценены
Ответы
Ответ 1
Я получаю ошибку "не могу разрешить символ" на "узлах"
заключается в том, что utils/dom
в стандартном коде Node означает "найти dom.js внутри модуля с именем utils". Вы переопределили это поведение, используя свойство webpack moduleDirectories
, но WebStorm не знает, что это такое Чтобы WebStorm правильно разрешал utils/dom
, вам нужно добавить папку utils
в качестве библиотеки в вашей конфигурации проекта webstorm.
Синтаксис export
неверен. Синтаксис импорта/экспорта ES6 на 100% не связан с объектами, а в вашем примере экспорта используется синтаксис объекта. import { nodes }
запрашивает экспорт с именем nodes
. Существует несколько способов, которыми вы могли бы написать экспорт, который у вас есть:
export const write = document.write.bind(document);
export const node = document.querySelector.bind(document);
export const nodes = document.querySelectorAll.bind(document);
или, наоборот, вы можете свернуть их, если вам нравится многострочный var/let/const
export const write = document.write.bind(document),
node = document.querySelector.bind(document),
nodes = document.querySelectorAll.bind(document);
или даже
const write = document.write.bind(document);
const node = document.querySelector.bind(document);
const nodes = document.querySelectorAll.bind(document);
export {write, node, nodes};
Ответ 2
Сложно сказать, связано ли это напрямую, но для Webstorm, чтобы узнать, как разрешить импорт, вы также можете перейти в Preferences > Directories
и установить папки как Resource Root
(или right/context -включить папку и установить ее таким образом)
Это может потребоваться, например, когда вы настроили Webpack для разрешения определенных подкаталогов, где может быть ваша структура проекта:
/
/docs
/src
/containers
/app
App.js
/components
/header
Header.js
В этом случае Webstorm ожидает, что импорт в App.js
будет выглядеть следующим образом:
import Header from '../../../components/header/Header'
В то время как с помощью Webpack, если вы добавили src
в качестве модуля для решения, вы можете сделать следующее, которое Webstorm не понимает в настоящее время, поэтому добавление его в качестве корня ресурса разрешает проблема
import Header from 'components/header/Header'
Ссылка: Псевдонимы путей для импорта в Webstorm