Импортированная функция в указанном c файле возвращает TypeError: X не является функцией, но работает в других файлах - PullRequest
0 голосов
/ 14 апреля 2020

Я использую Node.JS 12 LTS

Существует файл с именем CompanyUtil. js и другой файл с именем ScrapNames. js

В ScrapNames. js - I экспортировали несколько методов, используя module.exports = {ParseName: ParseName, et c} синтаксис и импортировали метод ParseName в CompanyUtil. js

Экспортированный метод ParseName является асин c функцией внутри ScrapNames. js

CompanyUtil. js выводит TypeError: ParseName не является функцией при попытке выполнить метод ParseName; однако тот же метод ParseName работает с другими файлами, которые я тестировал.

Синтаксис импорта функций, который я использовал:

const { ParseName } = require('./ScrapNames.js')

И вот как я его называю после импорта:

async function main() {
 let name = await ParseName("Steve Jobs")
 return name
}

Пока что я перезапустил свой компьютер и удалил CompanyUtil. js и заново добавил его, но не повезло.

Мне нужно добавить, что ScrapNames. js также использует три метода из CompanyUtil . js

Связано ли это с названием CompanyUtil? Возможно, циклическая зависимость?

Что удивляет меня, что этот метод работал с этим файлом этим утром и ScrapNames. js имел только около двух ссылок на методы для CompanyUtil. js, но во второй половине дня я добавил дополнительные ссылки и это сломало приложение.

Ответы [ 3 ]

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

Из вашего кода попробуйте использовать;

const ParseName = require ('./ ScrapNames. js')

вместо const {ParseName} = require ('./ ScrapNames. js ')

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

Может подтвердить, что эта проблема вызвана циклическими зависимостями. Я реорганизовал весь код и переместил метод NameParse в независимый модуль; сейчас все работает отлично.

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

Есть одна вещь, которую я не видел, требовался ли вам файл ScrapNames. js после экспорта в CompanyUtil. js.

Если вы еще этого не сделали, попробуйте сделать это, поскольку это может быть причиной (я думаю). Опять же, вы соглашаетесь с именами, вы не должны начинать первую букву имени файла с заглавной буквы.

Фрагмент кода будет более полным для решения вашей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...