我使用npm -v =>3.10.10
并且我想运行Angular2的新项目(空的)。
如果我写
npm isntall angular2 --save
我明白了:
但在阅读this answer之后说明:
您可能需要手动安装未满足的顶级模块 依赖关系:
- 我这样做了:
npm isntall es6-shim@^0.35.0 --save
npm isntall reflect-metadata@0.1.2 --save
npm isntall rxjs@5.0.0-beta.6 --save
npm isntall zone.js@^0.6.12 --save
现在我有了这个:
所以现在package.json
看起来像是:
{
"name": "AngularJS2",
"version": "1.0.0",
"author": "Ray Villalobos",
"description": "...",
"repository": {
"type": "git",
"url": "https://github.com/planetoftheweb/angular2.git"
},
"devDependencies": {
"gulp": "^3.9.0",
"gulp-sourcemaps": "^1.6.0",
"gulp-typescript": "^2.10.0",
"gulp-webserver": "^0.9.1"
},
"dependencies": {
"angular2": "^2.0.0-beta.21",
"es6-shim": "^0.35.0",
"reflect-metadata": "^0.1.2",
"rxjs": "^5.0.0-beta.6",
"zone.js": "^0.6.12"
}
}
tsconfig.json
看起来像:
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules"
]
}
现在我在gulp
中运行cmd
,该网站已启动并正常运行(this is the gulpFile.js file):
但是看着cmd - I see many warnings:
C:\Users\sff\Desktop\1>gulp [11:39:33] Using gulpfile
~\Desktop\1\gulpfile.js [11:39:33] Starting 'copylibs'... [11:39:33]
Starting 'typescript'... [11:39:33] Starting 'watch'... [11:39:33]
Finished 'watch' after 22 ms [11:39:33] Starting 'webserver'...
[11:39:33] Webserver started at http://localhost:8000 [11:39:33]
Finished 'webserver' after 8.84 ms
C:/Users/sff/Desktop/1/node_modules/angular2/platform/browser.d.ts(78,90):
error TS2304: Cannot find name 'Promise'.
C:/Users/sff/Desktop/1/node_modules/angular2/src/core/application_ref.d.ts(38,88):
error TS2304: Cannot find name 'Promise'.
C:/Users/sff/Desktop/1/node_modules/angular2/src/core/application_ref.d.ts(92,42):
error TS2304: Cannot find name 'Promise'.
C:/Users/sff/Desktop/1/node_modules/angular2/src/core/application_ref.d.ts(151,33):
error TS2304: Cannot find name 'Promise'.
C:/Users/sff/Desktop/1/node_modules/angular2/src/core/change_detection/differs/default_keyvalue_differ.d.ts(23,15):
error TS2304: Cannot find name 'Map'.
C:/Users/sff/Desktop/1/node_modules/angular2/src/core/change_detection/differs/default_keyvalue_differ.d.ts(25,16):
error TS2304: Cannot find name 'Map'.
C:/Users/sff/Desktop/1/node_modules/angular2/src/core/di/reflective_provider.d.ts(103,123):
error TS2304: Cannot find name 'Map'.
C:/Users/sff/Desktop/1/node_modules/angular2/src/core/di/reflective_provider.d.ts(103,165):
error TS2304: Cannot find name 'Map'.
但是 - 我已经找到了解决方案:
npm install @types/core-js --save-dev
和
更改tsconfig.json
的内容:
"target": "es5"
---到---> "target": "es6"
现在看起来不错:
问题
错误包括Map
,Set
和Promise
ES6
功能。
- 这会导致编译器使用缺少上述类型定义的普通es5 lib.d.ts
。
但现在事情不会起作用,因为它们应该是因为并非所有浏览器都支持这一点。
PS
其他解决方案声明将TS文件更改为:
"target": "es5",
"lib": ["es5", "es6", "dom"],
应该有效。但事实并非如此。还是一样的错误。
答案 0 :(得分:1)
您正在尝试下载已弃用的angular2版本:
使用@ angular / cli,因为为您配置了所有内容(tsconfig
,@types/
和shims
):
npm install @angular/cli -g
ng new myApp
cd myApp
ng serve