«Невозможно использовать инструкцию import за пределами модуля» — модуль JavaScript импортирован в файл машинописи, модуль JavaScript имеет другие импортные функции внутри

#javascript #angular #typescript #import #syntax-error

#язык JavaScript #угловой #машинописный текст #импортировать #синтаксическая ошибка

Вопрос:

Для дальнейшего объяснения можно представить, что у меня есть набор модулей JavaScript, которые запускаются из одного начального модуля, который импортируется в компонент Angular.

Что я пробовал:

Я использую "type" : "module" в файле package.json и объявил все сценарии как модули в файле типов, я также объявил их в разделе скрипты в angular.json. Я зашел так далеко, что настроил сценарии как модули в index.html, но я все еще получаю «Неперехваченную синтаксическую ошибку: невозможно использовать оператор импорта вне модуля».

Когда возникает ошибка:

Ошибка возникает в первом операторе импорта из исходного модуля JavaScript, например, в строке 1.

Инструкция import просто выглядит так из исходного модуля JavaScript с последующими инструкциями для других сценариев, все из которых вызовут ту же проблему.

import * as objParser from './scripts/objParser.js'

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

Может быть, в чем проблема?

Моя идея заключается в том, что Angular не проверяет эти файлы JavaScript как модули, поскольку они не используют импорт в базе кода Angular. Есть Какие-Нибудь Идеи?

Ответ №1:

использовать const objParser = require('./scripts/objParser.js'); .

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

1. Я преобразовал скрипт в пакет с browerify, но я не уверен, как я теперь могу использовать его в угловом компоненте

Ответ №2:

Вы можете создать index.ts файл в папке «Сценарии», который позволит вам импортировать все модули из этого файла.

вы добавляете их в index.ts подобные

 export * from './scripts/objParser.js';  

тогда вы могли бы импортировать такие

 import { ObjParser } from './scripts'  

если это несовместимо, это может быть связано с тем, что они не являются библиотеками машинописных текстов.