这是我第一次使用TypeScript和JavaScript编写。我现在遇到一个问题,需要使用相当老的Node Module。我是这样导入的:
import * as D2L from 'valence/lib/valence'
当我尝试使用它时:
let appContext = new D2L.ApplicationContext('asd', 'asd').createUrlForAuthentication('wlutest.brightspace.com', 443, 'localhost:8100/callback');
此错误弹出:
错误TypeError:_valenceES6__WEBPACK_IMPORTED_MODULE_8 __。ApplicationContext不是构造函数
我尝试为此模块生成d.ts,但唯一的效果似乎是使我的IDE平静下来,但错误仍然存在。
我以前没有使用JavaScript的经验,但是从valence.js
的第193行开始,对我来说似乎是一个合适的构造函数:
/**
* Build a new ApplicationContext instance.
*
* An application context stores the state of the application (app ID, and app
* Key) and provides methods for authentication. Given the authentication
* information, it creates a {@link D2L.UserContext} with the appropriate
* arguments.
*
* @param {String} appId Application ID as provided by Desire2Learn's key tool.
* @param {String} appKey Application Key as provided by Desire2Learn's key tool.
*
* @constructor
* @this {D2L.ApplicationContext}
*/
D2L.ApplicationContext =
function (appId, appKey) {
// Previous version took an appUrl as a first argument but threw it
// away. This provides backwards compatibility for that contract.
if (arguments.length === 3) {
appId = arguments[1];
appKey = arguments[2];
}
this.appId = appId;
this.appKey = appKey;
};
我也曾尝试使用工具将该文件转换为其他js版本,但没有运气。有人可以阐明这一点吗?
答案 0 :(得分:0)
原来,我使用的模块已过时,并且JS文件末尾甚至没有CallHomeApiRequest
。添加完之后,我的项目现在可以识别该库了。