首页 > 解决方案 > 在 Angular 库中使用带有 Ng-Packagr 的全局变量

问题描述

鉴于我们试图在使用 ng-packagr 构建的 Angular 项目中引用 Lodash,我们收到以下错误:

错误 TS2686:“_”指的是一个 UMD 全局,但当前文件是一个模块。考虑改为添加导入。

这向我表明它没有正确选择我们设置的打字稿定义文件。

该错误仅在使用 ng-packagr 构建时发生。使用 ng-serve 测试演示应用程序时,它工作正常。

打字.d.ts

/* SystemJS module definition */
declare var module: NodeModule;
interface NodeModule {
  id: string;
}

// lodash global typing - begin
declare namespace _ {
}
// lodash global typing - end

我在 ng-packagr 的 github 页面上看到了各种关于使用外部或嵌入式的问题,但文档非常稀少,并且该领域的实验没有为我提供任何线索。

我已经看到这个片段弹出了几次,它似乎准确地引用了正确的路径。

ng-package.json

...
    "externals": {
      "lodash": "./node_modules/lodash/index.js"
    },
...

有人知道我如何调试和调查这个吗?

标签: angularng-packagr

解决方案


我找到了解决这个问题的方法,但我对解决方案不满意。

在以下链接中,ng-packagr 的作者建议使用三斜杠引用来引用 .d.ts。

https://github.com/dherges/ng-packagr/issues/908


推荐阅读