【问题标题】:AngularJs + Typescript: error TS2307: Cannot find module 'angular'AngularJs + Typescript:错误 TS2307:找不到模块“角度”
【发布时间】:2017-03-18 02:39:46
【问题描述】:

我正在尝试结合 Angular1.5 + Typescript。 安装所需类型:

npm install @types/angularjs

但仍然看到错误:

错误 TS2307:找不到模块“角度”

已经尝试过不同的选择:

import 'angular';
import 'angularjs'; //that is name inside @types
import angular from 'angularjs';
import * as angular from 'angular';

我正在使用:

"ts-loader": "1.0.0",
"typescript": "2.0.7",
"webpack": "1.13.3",
"webpack-dev-server": "1.16.2"

tsconfig 非常标准:

{
  "compilerOptions": {
    "target": "es5",
    "noImplicitAny": false,
    "sourceMap": false,
    "lib": ["es6", "dom"],
    "typeRoots": ["./node_modules/@types"]
  },
  "exclude": ["node_modules"]
}

已经尽可能简化了 webpack 配置: var webpack = new require('webpack');

module.exports = {
  context: __dirname + '/src',
  entry: './index.ts',
  output: {
    path: './dist',
    filename: 'app.bundle.js'
  },
  module: {loaders: [{test: /\.tsx?$/, loader: 'ts-loader'},]},
  resolve: {
    extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js'],
  },

  plugins: [new webpack.NoErrorsPlugin()],

  devtool: 'source-map',

  devServer: {
    contentBase: './dist',
    historyApiFallback: true,
    inline: true
  }
};

我还简化了 index.ts 本身,只关注类型导入:

import * as angular from 'angular';
angular.module('testmodule', []);

UPD:tsconfig.json。添加了 typeRoots 选项。

现在出现新错误:

.../node_modules/@types/angularjs/angular-mocks.d.ts 中的错误 (6,26): 错误 TS2307: 找不到模块 'angular'。

.../node_modules/@types/angularjs/angular-mocks.d.ts 中的错误 (65,49):错误 TS2304:找不到名称“IServiceProvider”。

.../node_modules/@types/angularjs/angular-mocks.d.ts 中的错误 (122,62):错误 TS2304:找不到名称“IScope”。

.../node_modules/@types/angularjs/index.d.ts 中的错误 (66,43): 错误 TS2304: 找不到名称 'JQuery'。

【问题讨论】:

  • 你能显示你的目录结构和 tsconfig 文件吗?此外,如果您使用 Webpack 或 SystemJS 之类的工具,也会显示它的配置。
  • 感谢您的反馈,更新了我的问题
  • 尝试在您的 tsconfig 中添加 "typeRoots": ["./node_modules/@types"]"compilerOptions"
  • 好的,现在我有新的错误
  • 我做了一些测试并想通了。查看我的答案stackoverflow.com/a/40421638/4488121

标签: angularjs typescript typescript-types


【解决方案1】:

如果你在命令行中运行它应该可以解决问题。

npm install @types/angular

这个修复的烦人之处在于,由于某种原因它不会更新你的 package.json。但是,如果你将以下内容添加到 package.json 中的依赖项而不是上面它应该解决问题并让 package.json 镜像您的包。

"@types/angular": "1.6.5",
"@types/jquery": "2.0.40",

【讨论】:

  • for some reason it doesn't update your package.json - 添加 --save 标志以便将其保存在您的 package.json 中
  • 从 npm5 开始,npm 默认会 --save。
猜你喜欢
  • 2017-10-13
  • 2017-12-10
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 2018-08-29
相关资源
最近更新 更多