Я работаю над проектом Typescript, в котором используется библиотека btoa .
Я импортирую его в свой TS так:
import btoa from 'btoa';
и используйте его соответственно:
xhr.defaults.headers.common.Authorization = `Basic ${btoa(unescape(encodeURIComponent(`${user}:${pass}`)))}`;
Я компилирую свой TS в commonjs в формате ES5, используя tsc, webpack с плагином babel-loader, и когда я пытаюсь использовать мою lib в среде узлов, я получаю сообщение об ошибке в тот момент, когда пытается выполнить функцию btoa быть вызванным:
TypeError: btoa_1.default is not a function
В пакете btoa есть файл наборов, куда он экспортирует функцию по умолчанию:
export default function(str: string): string;
Я могу только догадываться, каким образом я импортирую это может быть неправильно?
Мой tsconfig выглядит следующим образом:
{
"compilerOptions": {
"baseUrl": "",
"outDir": "./dist/commonjs",
"module": "commonjs",
"target": "es5",
"declaration": true,
"moduleResolution": "node",
"declarationDir": "./dist/typings/",
"lib": [
"es6",
"es2015",
"dom"
],
},
"files": [
"./src/index.ts"
]
}
Что мне нужно сделать, чтобы разрешить правильное использование пакета btoa в моем скомпилированном коде commonjs?
Спасибо
Обновление
Я попытался использовать следующий синтаксис:
import * as btoa from 'btoa';
После чего TS жалуется в тот момент, когда я пытаюсь его использовать, говоря:
Cannot invoke an expression whose type lacks a call signature. Type 'typeof import("/Users/rparker-admin/Documents/Github/nepal/api-client/node_modules/@types/btoa/index")' has no compatible call signatures.
Затем я понял, что могу вызвать btoa.default(...)
в моем исходном файле TS, и это устраняет ошибку TS, но у меня все еще есть проблема в моем скомпилированном коде commonjs:
TypeError: btoa.default is not a function
Где я иду не так?
Спасибо