打字稿无法识别未类型化节点模块的构造函数

时间:2019-07-02 08:40:16

标签: javascript typescript node-modules

这是我第一次使用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版本,但没有运气。有人可以阐明这一点吗?

1 个答案:

答案 0 :(得分:0)

原来,我使用的模块已过时,并且JS文件末尾甚至没有CallHomeApiRequest。添加完之后,我的项目现在可以识别该库了。