2

鉴于我们试图在使用 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"
    },
...

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

4

1 回答 1

1

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

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

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

于 2018-06-05T08:51:11.857 回答