angularjs2的环境问题解决了很久。javascript
百度到的答案也是各类各样还解决不了个人问题。html
好在这几天通过不断的测试终于给解决了。java
出现这个错误的缘由是本地typescript版本冲突了。可是我不知道npm为何会这样。网上说它的机制按理说不是会致使版本冲突的问题。没有研究过。node
首先:webpack
$ npm ls typescriptangularjs
输入这个命令查看项目的typescript版本和依赖。web
发现出现2个不一样的版本在各个地方了。typescript
因为angular\cli依赖的是2.1.6,这个是自动生成的,总不能去node_module里面去找package.json改吧。无法改。放弃。
ng2@0.0.0 d:\web\myNg\ng2
+-- @angular/cli@1.0.0-rc.1 -> d:\web\myNg\ng2\node_modules\.1.0.0-rc.1@@angular\cli
| +-- @angular/compiler-cli@2.4.9
| | +-- @angular/tsc-wrapped@0.5.2
| | | `-- typescript@2.1.6 deduped extraneous
| | `-- typescript@2.1.6 extraneous
| +-- @angular/tsc-wrapped@0.5.2
| | +-- tsickle@0.2.6
| | | `-- typescript@2.1.6 extraneous
| | `-- typescript@2.1.6 extraneous
| +-- @ngtools/webpack@1.2.12
| | `-- typescript@2.1.6 extraneous
| `-- typescript@2.1.6
`-- typescript@2.0.10npm
那么另外一个2.0.10是在项目的package.json中配置的。这个虽然是angular/cli生成的,可是是在咱们本身的项目里面,因此很好改,咱们把这里的typescript改为angular/cli本身依赖的那个版本。json
把这个改为
~表示npm会自动下载离他最近的一个小版本。好比个人电脑上面就是2.1.6。这样的话,就是angular/cli本身依赖的彻底一致了。
再次
$ npm ls typescript
发现,版本一致了。
ng2@0.0.0 d:\web\myNg\ng2
+-- @angular/cli@1.0.0-rc.1 -> d:\web\myNg\ng2\node_modules\.1.0.0-rc.1@@angular\cli
| `-- typescript@2.1.6
`-- typescript@2.1.6 -> d:\web\myNg\ng2\node_modules\.2.1.6@typescript
$ ng serve
** NG Live Development Server is running on http://localhost:4200 **
Hash: b21dc5aadbb6f2b69213
Time: 10251ms
chunk {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 158 kB {4} [initial] [rendered]
chunk {1} main.bundle.js, main.bundle.js.map (main) 3.14 kB {3} [initial] [rendered]
chunk {2} styles.bundle.js, styles.bundle.js.map (styles) 9.84 kB {4} [initial] [rendered]
chunk {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.6 MB [initial] [rendered]
chunk {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
搞定。在这里作个笔记,但愿能帮到以后遇到的人。毕竟这玩意刚接触太浪费时间了。
对了,安装环境的时候记得用cnpm install。原生的npm install安装会报错,缘由是node-sass被墙了