ERROR ReferenceError: Q is not defined in Angular 11 project

ERROR ReferenceError: Q is not defined in Angular 11 project

我在我的 Angular 11 项目 (myCustomJS.js) 中添加了一个使用 Q 库的自定义 javascript 文件。

但是,我的 javascript 文件中的以下代码行出现“错误 ReferenceError:Q 未定义”。

错误:“错误参考错误:Q未定义”

在线:var deferred = Q.defer();

仅供参考,我在 package.config 中添加了以下软件包:

{
    "@types/q": "^1.5.4",
    "q": "^1.5.1",
}

我在 angular.json 文件中添加了以下内容:

"scripts": [
    "node_modules/q/q.js",  // Added reference to Q Library
    "src/assets/js/myCustomJS.js"   // My Custom Javascript File
]

在 tsconfig.app.json 文件中添加了以下类型:

"types": [
    "jquery",
    "q" // Added q type definitions
]

不确定我的 Angular 11 项目中是否缺少更多参考资料。请建议如何修复 Q is not defined 错误。

我能够通过在 /node_modules/q/q.js 文件中注释 2 行(第 46 行和第 47 行 - else if block)来解决“Q not defined”问题(见下面的截图)。由于这两行,它无法将 Q 定义为全局变量,特别是当它找到 RequireJS 时。一旦被注释掉,它就会进入另一个定义 Q 全局变量的 else if 块。

这里有几篇文章和与此问题相关的不同解决方案:

  • Running Q on page with Require.js
  • How to load Q library with Require.js