【问题标题】:ERROR ReferenceError: Q is not defined in Angular 11 project错误 ReferenceError: Q 未在 Angular 11 项目中定义
【发布时间】:2021-01-12 06:33:52
【问题描述】:

我在使用 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 未定义错误。

【问题讨论】:

  • 您可能缺少在您的 app.module.ts 或您想要使用它的任何模块中导入它
  • 我添加了“import * as Q from 'q';”并在 app.module.ts 的导入数组中添加了 Q 但这会导致不同的编译错误...例如: TS2322: Type 'typeof Q' is not assignable to type 'any[] |类型 | ModuleWithProviders'

标签: angular q angular11


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-02-15
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    相关资源
    最近更新 更多