AngularJS1.5中import angular报TS2307找不到模块问题咨询
当前使用的技术栈版本
- AngularJS - 1.5
- TypeScript - 1.8.10
- WebPack - 1.15.0
tsconfig.json配置内容
{ "compilerOptions": { "target": "es5", "module": "commonjs", "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, "sourceMap": true }, "exclude": [ "node_modules", "typings", "dist" ], "compileOnSave": false, "buildOnSave": false, "atom": { "rewriteTsconfig": false } }
构建报错信息
执行npm run build构建命令时,出现如下报错:
ERROR in ./src/main/frontend/app/leftmenu/index.ts
(1,21): error TS2307: Cannot find module 'angular'.
index.ts文件内容
import {angular} from 'angular'; import {MenuService} from './menuService'; import {LeftMenuController} from './leftmenu'; angular.module('tat') .service('MenuService', MenuService) .component('leftMenu',{ template : require('./leftmenu.html'), controller : LeftMenuController, controllerAs : 'lm' });
备注:angular模块已经安装在项目的node_modules目录中。
咨询诉求
如何配置才能让index.ts文件正确识别angular模块?
解决方案
报错由两个问题共同导致,按顺序修改即可:
- 修正angular的导入写法
AngularJS 1.x的npm包不存在名为angular的命名导出,当前使用的import {angular} from 'angular'写法不符合包的导出规则,将index.ts首行代码替换为:import * as angular from 'angular'; - 补全AngularJS对应的TypeScript类型声明
仅安装angular的npm包不足以让TypeScript识别模块,还需要安装对应的类型描述文件。你当前使用的TypeScript 1.8版本配套typings工具管理类型声明,依次执行以下两条命令完成安装:
安装完成后项目根目录会自动生成typings目录及对应配置,不需要额外修改tsconfig.json,重新执行npm install typings -g typings install dt~angular --global --savenpm run build即可正常编译。如果后续将TypeScript升级到2.0及以上版本,可直接执行npm install @types/angular -D安装类型声明,无需依赖typings工具。
内容的提问来源于stack exchange,提问作者harish
相关产品推荐
相关产品推荐

