Я смог импортировать, используя это, но я получаю следующую ошибку:
ема
Я не могу заставить библиотеку MSAL правильно импортировать в мой машинописный код. Я используюMSAL для JS библиотека (которая должна иметь типизацию) в простом проекте машинописного текста / реагирования с использованием сценария create-реагировать-приложения со сценариями реагирования-машинописи. Я новичок в машинописи и не уверен, что мне не хватает чего-то очевидного или есть проблема с пакетом MSAL при использовании его с проектами машинописи.
Подробности:Я добавил пакет MSAL из NPM, используяnpm install --save msal
.Я попытался импортировать MSAL в мои .ts, используя различные формыimport {Msal} from 'msal';
Это приводит к ошибке машинописиCould not find a declaration file for module 'msal'. '<path>/node_modules/msal/out/msal.js' implicitly has an 'any' type.
Думая, что это было странно, я посмотрел на папку node_module / msal / out и увидел файл msal.d.ts, чего я и ожидал.Когда я смотрю на содержимоеmsal.d.ts файл, я не вижу экспорт, который я обычно ожидал бы увидеть.Я попытался установить объявление из @types, используяnpm install --save-dev @types/msal
, но его не существует.Я также попытался импортировать его в свой файл, используяlet Msal = require('Msal');
, но получите ошибку, что Msal.UserAgentApplication не является конструктором.Мне не повезло, когда я попытался использовать директиву /// reference и добавить тег script в основной файл index.html. Это также не похоже на правильный путь решения проблемы.ExampleMsal.tsimport { observable, action, computed } from 'mobx';
import * as Msal from 'msal'; // <-- This line gives the error
class ExampleMsal{
@observable
private _isLoggedIn: boolean;
constructor() {
this._isLoggedIn = false;
}
@computed
get isLoggedIn(): boolean {
return this._isLoggedIn;
}
@action
signIn() {
let userAgentApplication = new Msal.UserAgentApplication('<client-id>', null,
function (errorDes: string, token: string, error: string, tokenType: string) {
// this callback is called after loginRedirect OR acquireTokenRedirect
// (not used for loginPopup/aquireTokenPopup)
}
);
userAgentApplication.loginPopup(['user.read']).then(function(token: string) {
let user = userAgentApplication.getUser();
if (user) {
// signin successful
alert('success');
} else {
// signin failure
alert('fail');
}
}, function (error: string) {
// handle error
alert('Error' + error);
});
this._isLoggedIn = true;
}
@action
signOut() {
this._isLoggedIn = false;
}
}
export default ExampleMsal;
tsconfig.json{
"compilerOptions": {
"outDir": "build/dist",
"module": "commonjs",
"target": "es5",
"lib": ["es6", "dom"],
"sourceMap": true,
"allowJs": true,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "src",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true,
"experimentalDecorators": true
},
"exclude": [
"node_modules",
"build",
"scripts",
"acceptance-tests",
"webpack",
"jest",
"src/setupTests.ts"
],
"types": [
"typePatches"
]
}