AngularJS + TypeScript:Uncaught TypeError:无法读取属性' module'未定义的

时间:2017-04-18 11:43:27

标签: javascript angularjs typescript webpack es6-module-loader

我试图在AngularJS 1.x应用程序中使用TypeScript。

我的应用程序已经使用Webpack作为模块加载器,因此我将其配置为处理TypeScript编译(在将所有* .js源文件重命名为* .ts之后),并设法使其正常工作。所以它编译没有错误并生成我的JavaScript输出文件。

唯一的问题是,当我在浏览器上运行应用程序时,它不起作用,我收到此控制台错误:

  

未捕获的TypeError:无法读取属性'模块'未定义的

以及:

  

未捕获错误:[$ injector:modulerr]无法实例化模块myModuleName,原因如下:   错误:[$ injector:nomod]模块' myModuleName'不可用!您要么错误拼写了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。

我的猜测是,由于某种原因,对象angular为空,当我尝试访问angular.module时,它会抱怨。

我不明白为什么会这样,因为当我在代码中使用import angular from 'angular/angular';时,它会成功编译。

完整的源代码可用here

Webpack输出:

Hash: 824157db8ed6acf47fc1 Version: webpack 2.2.1 Time: 2242ms Asset Size Chunks Chunk Names othello-bundle.js 1.27 MB 0 [emitted] [big] app othello-bundle.js.map 1.51 MB 0 [emitted] app [0] ./~/angular/angular.js 1.24 MB {0} [built] [5] ./app/services/othello_AI.ts 8.65 kB {0} [built] [6] ./app/services/othello_handler.ts 9.3 kB {0} [built] [7] ./app/index.ts 723 bytes {0} [built] + 4 hidden modules

1 个答案:

答案 0 :(得分:2)

我终于找到了解决方案。

使用TypeScript时,需要使用以下方法导入AngularJS:

import * as angular from 'angular';

问题在于我仍然像使用es6一样导入它:

import angular from 'angular';