Как узнать, является ли конкретный модуль модулем CommonJS или модулем ES6?

У меня есть функция Azure (которая использует NodeJS), из которой я пытаюсь использовать модуль npm, опубликованный другой командой. После того, как npm добавил рассматриваемый модуль, я пытаюсь использовать его следующим образом:

import * as Model from "@thing/app-model";
...
const appModel: Model.TheModel = new Model.TheModel([]);

Однако, когда я пытаюсь запустить функцию Azure, я получаю эту ошибку:

[error] Worker was unable to load function pump: 'SyntaxError: Unexpected token export'

Результаты, связанные с этим сообщением об ошибке, которые я мог найти в Интернете, говорят, что эта ошибка обычно указывает на то, что я пытаюсь использовать модуль ES6, что-то, что Node не поддерживает (вместо этого я должен использовать модуль CommonJS). Проблема в том, что я думал, что модуль БЫЛ модулем CommonJS. tsconfig.json для проекта, создающего модуль, имеет эту строку в параметрах компилятора:

"module": "commonjs"

Чтобы проверить или исключить проблему ES6 и CommonJS, если я посмотрю на импортированный модуль в каталоге node_modules моей функции Azure, есть ли способ определить, посмотрев на него, является ли он модулем ES6 или модулем CommonJS?

Спасибо!

Ознакомьтесь с соответствующим вопросом stackoverflow.com/questions/42708484/… и сообщением в блоге, связанным там (medium.com/webpack/…), и теперь удаленной документацией github.com/nodejs/node-eps/blob/…, чтобы узнать, поможет ли это вам. У меня нет времени на то, чтобы дать правильный ответ, а ответы только по ссылкам неприемлемы, так что это все, что я могу указать вам прямо сейчас.

Joe Frambach 09.07.2019 23:55
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
8
1
1 597
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Конфигурация компилятора в репозитории, который вы импортируете, не сообщает вам, какой код загружается при установке пакета. Откройте package.json из импортированного пакета и проверьте, на что указывает основное свойство. Затем откройте этот файл, и вы увидите, какой код вы на самом деле получаете. Публикация пакета позволяет преобразовать код в любой формат, который автор хочет сделать доступным для пользователей пакета.

Ответ принят как подходящий

Найдите пакет npm в папке node_modules и откройте файл package.json.

Пакет может поддерживать CommonJs и/или ES6, поэтому у вас может быть комбинация.

Вы должны увидеть что-то вроде этого:

  "main": "dist/index.js",
  "module": "dist/my-module.esm.js",

main обычно указывает на версию CommonJs, а module указывает на версию ESM.

Это общий случай и не всегда верно. Иногда завершенный файл может показать вам, поддерживает ли он оба, например. index.cjs.js, index.esm.js

Другие вопросы по теме

Похожие вопросы

Как сгенерировать инклюзивно ограниченное случайное число Парето из Math.random JavaScript
Функции, которые принимают массив в качестве аргумента и генерируют случайные числа
Замените автономную строку регулярным выражением в Javascript
Создание независимых секундомеров для каждого элемента в массиве. Установка времени остановки на основе данных, возвращаемых API
Как уведомить внешний интерфейс о необходимости обновления после установки пользовательского утверждения с помощью облачных функций Firebase onCreate listener
Объединяйте таблицы в SQL с повторяющимися именами столбцов в точечную нотацию без необходимости указывать каждый столбец с псевдонимом
Есть ли исправление для этой неясной ошибки, связанной с датой и временем в iOS на несколько минут?
Почему мой дискорд-бот не выходит в сеть без ошибок или чего-то еще?
Правильный способ избежать ${} в строке шаблона JS
Как изменить порядок столбцов с помощью Knex?