Node.js — Произошла ошибка при импорте сторонней библиотеки

#node.js #es6-modules

Вопрос:

Ребята, я все еще новичок Node.js и сталкиваюсь с проблемой при импорте стороннего модуля. Имя модуля — @azure/storage-blob, и в моем package.json файле используется "type": "module" настройка.

Когда я пытаюсь импортировать этот модуль со следующим синтаксисом. Я получаю сообщение об ошибке.

 import { BlobServiceClient } from "@azure/storage-blob";

SyntaxError: The requested module '@azure/storage-blob' does not provide an export named 'BlobServiceClient'
    at ModuleJob._instantiate (internal/modules/esm/module_job.js:92:21)
    at async ModuleJob.run (internal/modules/esm/module_job.js:107:20)
    at async Loader.import (internal/modules/esm/loader.js:179:24)
 

Но с этой настройкой этот проект отлично работает на моей другой машине, и я все еще не понимаю этого.

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

 import AzureStorageBlob from "@azure/storage-blob";
const { BlobServiceClient } = AzureStorageBlob;
 

Не могли бы вы, пожалуйста, помочь мне разобраться в этом вопросе?

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

1. Не смешивайте деструктуризацию с синтаксисом импорта модулей. Инструкция Import, которая выдает ошибку, предназначена для импорта именованного экспорта, который, как указано в сообщении об ошибке, не предусмотрен @azure/storage-blob пакетом. Второй оператор импорта, который отлично работает, предназначен для импорта экспорта по умолчанию , и это @azure/storage-blob , по-видимому, обеспечивает. Как только вы импортировали экспорт по умолчанию, вы можете уничтожить его, если это объект.

2. @Yousaf Спасибо за ответ, Но на моей другой машине этот синтаксис работает нормально import { BlobServiceClient } from "@azure/storage-blob" , я понял вашу точку зрения.

3. @Yousaf вы можете ответить?

4. Может быть, вы используете другую версию @azure/storage-blob на другой машине?! Если нет именованного экспорта, import { BlobServiceClient } from "..." не должно работать

5. Что вы подразумеваете под » Но с этой настройкой «? Это type: module ? Ты хочешь сказать, что это работает и без этого?