0

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

但是,我在我的 javascript 文件中的以下代码行中收到“ERROR ReferenceError: Q is not defined”。

错误:“错误参考错误:未定义 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 未定义错误。

4

1 回答 1

0

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

注释 RequireJS else-if 块

以下是与此问题相关的几篇文章和不同的解决方案:

于 2021-01-11T22:28:15.107 回答