#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');
}
}