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
Е, можете да експортирате обект и след това да импортирате { property } от 'path' локална променлива свойство ще бъде присвоено със стойността на експортираното свойство. Няма нищо лошо в синтаксиса. Работи добре. Не трябва да е относителен файлов път. Използвам webpack и babel loader. Нямам нужда от относителен файлов път, тъй като използвам moduleDirectories в конфигурацията на webpack за търсене в набор от папки. Така че в крайна сметка работи. И това е правилно, въпросът е защо 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