此应用程序使用jspm进行javascript模块加载,因此所有angular2 typescript定义文件都位于jspm_modules文件夹中。我得到的错误是,Typescript找不到模块'angular / core','angular / route','angular / http'等等。我在VS 2015编辑器和运行构建时都遇到错误,这是使用gulp-typescript 。我想也许是因为我的tsconfig.json中有jspm_packages:
{
"version": 3,
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"wwwroot/jspm_packages",
"wwwroot/app"
]
}
但是,如果我删除该行,我会得到各种重复的名称错误。我已经尝试按照其他类似问题的建议编辑我的xproj文件,但无济于事。有任何想法如何解决这个问题?
源代码可在github上找到。
https://github.com/ryanlangton/angular2-asp5-starter/tree/typescript-errors
答案 0 :(得分:0)
我认为class Message(Base):
__tablename__ = 'log'
__init__ = Base.__init__
ts = Column(DateTime)
uts = Column(BigInteger, primary_key=True)
user = Column(String(24))
message = Column(String(512))
目录中的npm install
应该解决这个问题。 TypeScript编译器将在package.json
中自动找到类型定义。
问题是依赖解析在JSPM驱动的Angualr2应用程序中是双重的。
编译阶段,在这种情况下为node_modules
,将会发现Angular2模块符合typescript编译器的规则。 gulp-typescript
通常会在tsc
中输入文件。因此,如果您在本地安装Angular2,node_modules
将正确解析它。
运行时阶段完全是另一回事。在浏览器中,所有依赖项都由jspm解析,jspm由gulp-typescript
配置。你的打字稿被编译成javascript,所以tsc不会干扰这里。 Systemjs会在config.js
中找到angular2
。
因此,似乎未安装编译阶段依赖项。试试jspm_packages
?