Вызов функции из модуля в ES6

#javascript #module #es6-modules

#javascript #модуль #es6-модули

Вопрос:

У меня есть модуль js и я импортирую его в основное приложение js.

Модуль js имеет свою собственную функцию / метод.

Однако, когда я пытаюсь вызвать этот метод из основного приложения js, я получаю ошибку eslint:
'testMethod' is defined but never used

test.js:

 export default function test() {
  console.log('foo');
  function testMethod() {
    console.log('bar');
  }
}
 

app.js

 import test from './test';

test.testMethod();
 

ошибка eslint: 'testMethod' is defined but never used

ошибка консоли: Uncaught Error: Module build failed: Module failed because of a eslint error

Комментарии:

1. Данный код не будет работать в синтаксисе ванильного ES6. Вы не предоставляете всю архитектуру. Пожалуйста, сообщите нам, какую систему сборки вы используете.

2. export function testMethod( . А затем из клиента. import {testMethod} from ".test"

Ответ №1:

Вы определяете вызываемую функцию testMethod , которая заключена в область действия test функции. testMethod Функция никогда не вызывается в той области, в которой она существует.

testMethod Функция не экспортируется и не видна за пределами области, в которой она определена (заключающая функция).

Основываясь на вашем примере в app.js , похоже, что вы хотите экспортировать объект, одним из свойств которого является testMethod функция test.js , а не функция. Сравните со следующим:

 // test.js
export function testMethod() {
 return "Hello";
}

// app.js
import { testMethod } from './test';
// or
import test from './test';

console.log(testMethod());
console.log(test.testMethod());

 

Ответ №2:

testMethod является функцией внутри test функции. Это не свойство экспортирующей test функции.
Если вам нужна внутренняя testMethod функция, вы можете экспортировать объект

 export default {
  testMethod: function() {
    console.log('bar');
  }
}