Функция не определена, ошибка в nodejs. Что не так с моим кодом? - PullRequest
0 голосов
/ 14 апреля 2020

Я создал два файла, приложение. js и помощники. js, и когда я попытался вызвать функцию из приложения. js, я получил ошибку, функция не определена.

Два файла находятся в одной папке. Я думаю, что есть проблема с ключевым словом module.exports,

Может кто-нибудь помочь мне здесь? Вот код двух отдельных файлов:

//app.js

const helpers= require('./helpers');


const total= sum(10,20);
console.log("total:",total);

//helpers.js

const sum = (a,b)=>{
	return a+b;
}

module.exports={
	sum
};

И ошибка, которую я получаю:

const total= sum(10,20);
             ^

ReferenceError: sum is not defined
    at Object.<anonymous> (E:\testing\app.js:5:14)
    at Module._compile (internal/modules/cjs/loader.js:1147:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:10)
    at Module.load (internal/modules/cjs/loader.js:996:32)
    at Function.Module._load (internal/modules/cjs/loader.js:896:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47

Ответы [ 4 ]

1 голос
/ 14 апреля 2020

Вы можете попытаться изменить способ экспорта функции sum в:

module.exports = sum;

Это потому, что когда вы определяете:

module.exports = {...}

, это означает, что вы экспортируете объект, а не функция.

Использование:

const sum= require('./helpers');

const total= sum(10,20);
console.log("total:",total);
0 голосов
/ 15 апреля 2020

Проблема в том, что вы экспортируете свою функцию sum в helpers.js внутри объекта:

// helpers.js

// ...

module.exports = {
    sum
};

Если вы хотите получить к нему доступ из app.js, вы можете использовать helpers.sum(...) для доступ к нему:

// app.js

const helpers = require('./helpers');


const total = helpers.sum(10, 20);
console.log("total:", total);

... или вы можете использовать деконструкцию объекта в строке require:

// app.js

const { sum } = require('./helpers');

// ...

Обновление

Конечно, ответ вы отправили работает, но от имени helpers.js я предполагаю, что вы можете поместить несколько вспомогательных функций в этот файл. Затем вы должны использовать экспорт объекта - как упомянуто выше - чтобы экспортировать все вспомогательные функции.

0 голосов
/ 15 апреля 2020

Наконец, я нашел свой ответ.

Мне просто нужно было заменить ключевое слово helpers на ключевое слово sum в первой строке приложения . js и я также удалил фигурные скобки вокруг суммы в помощниках. js согласно советам других.

Правильный код ниже

//app.js

const sum= require('./helpers');
const total= sum(10,20);

console.log("total:",total);

и

//helpers.js

const sum = (a,b)=>{
return a+b;
}
module.exports=sum;
0 голосов
/ 14 апреля 2020

Попробуйте так:

   //app.js

const helpers= require('./helpers');


const total= helpers.sum(10,20);
console.log("total:",total);

//helpers.js

const sum = (a,b)=> {
    return a+b;
}

module.exports = sum;
...