Получение именованного импорта Webstorm ES6 не может устранить ошибку символа

У меня есть ошибка в Webstorm при использовании именованного объявления импорта ES6:

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 webstorm выполняет другую проверку кода.

Любая идея, как я могу подавить это и использовать только eslint с парсером babel-eslint?

Любой совет будет оценен


person Vladimir Novick    schedule 25.07.2015    source источник
comment
Ваш экспорт просто неправильный, экспорт работает не так. Хотя насчет импорта не уверен. Что такое utils в данном случае? Это не стандартный путь, поскольку это не относительный путь к файлу. Есть ли у вас где-нибудь пользовательская логика разрешения модуля?   -  person loganfsmyth    schedule 25.07.2015
comment
Ну, вы можете экспортировать объект, а затем импортировать { свойство } из свойства локальной переменной «путь» будет присвоено значение экспортируемого свойства. Ничего плохого в синтаксисе. Это работает просто отлично. Это не должен быть относительный путь к файлу. Я использую webpack и загрузчик babel. Мне не нужен относительный путь к файлу, так как я использую moduleDirectories в конфигурации веб-пакета для поиска в наборе папок. Итак, суть в том, что это работает. И это правильный вопрос, почему webstorm показывает это как неправильное   -  person Vladimir Novick    schedule 25.07.2015
comment
@VladimirNovick Как вы тогда решили эту проблему?   -  person smilingpoplar    schedule 22.01.2016


Ответы (2)


Я получаю сообщение об ошибке "не удается разрешить символ" на "узлах"

потому что utils/dom в стандартном коде Node означает «найти dom.js внутри модуля с именем« utils ». Вы переопределили это поведение, используя свойство moduleDirectories webpack, но 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};
person loganfsmyth    schedule 25.07.2015

Трудно сказать, связано ли это напрямую, но чтобы Webstorm знал, как разрешить импорт, вы также можете перейти к Preferences > Directories и установить папки как Resource Root (или щелкнуть правой кнопкой мыши/контекстно по папке и установить это так)

Это может потребоваться, например, когда вы настроили 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

person a darren    schedule 10.08.2016