Angularjs angular_1.default.module Uncaught TypeError:无法读取属性';模块';未定义的

Angularjs angular_1.default.module Uncaught TypeError:无法读取属性';模块';未定义的,angularjs,typescript,gulp,webpack,Angularjs,Typescript,Gulp,Webpack,我正在使用angular 1.6、webpack、gulp和typescript创建一个初学者模板。我能够编译和构建我的应用程序,但应用程序并没有启动。这个问题很奇怪,因为当我调试angular.module时,定义了angular.module,并且可以从控制台angular.module('testModule',[])创建模块,但是作为恢复调试器,我在core.module.ts中得到异常,在export const coremule=angular.module('app.core',[

我正在使用angular 1.6、webpack、gulp和typescript创建一个初学者模板。我能够编译和构建我的应用程序,但应用程序并没有启动。这个问题很奇怪,因为当我调试
angular.module时,定义了
angular.module,并且可以从控制台
angular.module('testModule',[])
创建模块,但是作为恢复调试器,我在
core.module.ts
中得到异常,在
export const coremule=angular.module('app.core',[]).name

我通过禁用源代码进一步研究了这个问题,发现了问题所在。上述代码编译为
exports.CoreModule=angular_1.default.module('app.core',[]).name
其中在angular_1上没有名为
default
的属性。 有关代码,请参阅

Uncaught TypeError:无法读取未定义的属性“module”
反对。(app.bundle.js?CD443…:1)
在e(vendor.bundle.js?CD443…:1)
反对。(app.bundle.js?CD443…:1)
在e(vendor.bundle.js?CD443…:1)
反对。(app.bundle.js?CD443…:1)
在e(vendor.bundle.js?CD443…:1)
在window.webpackJsonp(vendor.bundle.js?cd4443…:1)
在app.bundle.js?CD443…:1
vendor.bundle.js?CD44443…:6未捕获错误:[$injector:modulerr]未能实例化模块应用程序,原因是:
错误:[$injector:nomod]模块“应用程序”不可用!您要么拼错了模块名,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。
http://errors.angularjs.org/1.6.1/$injector/nomod?p0=app
在http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:377
在http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:11230
在n(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:10668)
在http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:11004
在http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:20796
在r(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:809)
在h(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:20644)
在乐(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:22631)
至少(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:8560)
在圣(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:8870)
http://errors.angularjs.org/1.6.1/$injector/modulerr?p0=app&p1=Error%3A%20%…2F%2Flocalhost%3A8000%2Fvendor.bundle.js%3FCD4432605C6F5BE56A%3A6%3A8870)
在http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:377
在http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:11230
在n(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:10668)
在http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:11004
在http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:20796
在r(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:809)
在h(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:20644)
在乐(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:22631)
至少(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:8560)
在圣(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:8870)
http://errors.angularjs.org/1.6.1/$injector/modulerr?p0=app&p1=Error%3A%20%…2F%2Flocalhost%3A8000%2Fvendor.bundle.js%3FCD4432605C6F5BE56A%3A6%3A8870)
在http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:377
在http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:21073
在r(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:809)
在h(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:20644)
在乐(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:22631)
至少(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:8560)
在圣(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:8870)
至少(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:8109)
在http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:11:13916
在HTMLDocument.n(http://localhost:8000/vendor.bundle.js?cd4d4432605c6f5be56a:6:17809)

您确定在脚本之前包含AngularJS吗?该错误意味着Javascript尚未看到对象angular,因此无法对其调用模块。

我已将
导入angular from'angular'
替换为
导入*作为angular from'angular'
的angular,现在它工作正常。

您也可以添加

"esModuleInterop": true,

到您的
tsconfig.json
而不是到处使用星型导入。

我们需要更多信息,您的webpack.config和您的输入文件是什么样子的?@Dieterg我添加了git repo链接请克隆它以查看code@Dieterg我通过禁用源映射进一步研究了这个问题,我发现了这个问题。上述代码编译为exports.CoreModule=angular_1.default.module('app.core',[]).name;如果angular上没有名为default的属性,我可以从控制台获取angular对象,但当我跨过
export const CoreModule=angular.module('app.core',[]).name行我得到异常的代码。我认为这个错误是误导性的,但为什么这是必要的呢?我在
node_modules/angular
中看到一个index.js文件,它将默认导出设置为“angular”(这是v1.6),用于在Webpack2.X中将js更改为TS。
"esModuleInterop": true,