我试图在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
答案 0 :(得分:2)
我终于找到了解决方案。
使用TypeScript时,需要使用以下方法导入AngularJS:
import * as angular from 'angular';
问题在于我仍然像使用es6一样导入它:
import angular from 'angular';