#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
? Ты хочешь сказать, что это работает и без этого?