【问题标题】:typescript error: TS2304: Cannot find name '$'打字稿错误:TS2304:找不到名称'$'
【发布时间】:2017-12-01 11:18:49
【问题描述】:

声明

 x = $('#msgBox_' + scope.boxId).position().left;

生成一个

错误 TS2304:找不到名称“$”

虽然 jquery@types 安装在 node_modules 文件夹中。

我的 tsconfig.json 看起来像这样:

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "sourceMap": true,
    "moduleResolution": "node",
    "declaration": true
  },
  "exclude": [
    "node_modules"
  ]
}

我该如何解决这个问题?

【问题讨论】:

  • 如何在代码中访问$?作为全局变量?
  • 能否请您添加您的 tsconfig.json?
  • 尝试删除包含部分。
  • 你用的是什么版本的ts?

标签: javascript node.js typescript


【解决方案1】:

如果 AngularCLI 是你注入 JQuery 的地方,那么在你的控制器/组件中,你可以像这样声明变量:

declare var $: any;

【讨论】:

  • 我已将一些代码从 Angular 2+ 解决方案移动到 Angular 6 解决方案,这为我解决了问题。
【解决方案2】:

您是否尝试过:

 import $ = require('jquery');

在 1 行?这应该有效。 尽管您应该更深入地了解 es6 模块和 ts 模块,以掌握如何利用 es6 模块化系统。还有 d.ts 文件...

这应该会有所帮助: https://www.typescriptlang.org/docs/handbook/modules.html

【讨论】:

  • 在哪个文件的第一行?
  • 你使用jquery的地方。
  • 由于当前的 tsconfig.json,这应该不是必需的。 Jquery 也被定义为全局变量,只有在“isolatedModules”标志为真时才需要导入它。
  • 实际上,它修复了这个错误。但是:在相同代码的先前版本中,此导入不是必需的。我现在不太明白,为什么我现在需要它。
  • @user1934212 它在类型定义github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/… 中被定义为全局或模块,你应该什么都不做。
【解决方案3】:

原来我错过了“@types/jquery”节点模块,其中包含“$”的定义。一旦我将“@types/jquery”:“^3.2.5”添加到我的 package.json 中的“devDependencies”列表并通过“npm install”重新安装,一切正常。

【讨论】:

    【解决方案4】:

    这种错误的一个原因是您的 node_modules 不包含 jquery 的类型定义,即。包@types/jquery 丢失。

    我的解决方法如下:

    1. 在项目文件夹的根目录中打开命令提示符并键入:

      npm install --save @types/jquery

      如果您遇到选择版本的问题,请选择最新版本。

    2. 上述命令成功结束后,运行yarn install

    3. 上述安装成功后,运行yarn start 启动您的项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2019-02-13
      • 1970-01-01
      • 2017-06-18
      • 1970-01-01
      • 2016-09-21
      • 2023-03-17
      相关资源
      最近更新 更多