Angular 2 CLI 已升级到最新版本,现在 ng serve 出现错误
2016-09-01
1357
我在当前的 Angular 2 CLI 项目中升级到了
1.0.0-beta.11-webpack.8
,并更新了我的 angular-cli.json 以匹配升级后的 CLI 的预期属性。当我运行 ng serve 时,我收到此错误:
`Cannot read property 'length' of undefined
TypeError: Cannot read property 'length' of undefined
at Object.getWebpackCommonConfig (/Applications/MAMP/htdocs/learnloop/node_modules/angular-cli/addon/ng2/models/webpack-build-common.ts:23:25)
at new NgCliWebpackConfig (/Applications/MAMP/htdocs/learnloop/node_modules/angular-cli/addon/ng2/models/webpack-config.ts:13:30)
at Class.exports.default.Task.extend.run (/Applications/MAMP/htdocs/learnloop/node_modules/angular-cli/addon/ng2/tasks/serve-webpack.ts:19:22)
at /Applications/MAMP/htdocs/learnloop/node_modules/angular-cli/addon/ng2/commands/serve.ts:84:26
at process._tickCallback (internal/process/next_tick.js:103:7)`
我为此纠结了一段时间,但在运行了所有这些命令并使 Angular CLI 不再处于损坏状态后,我遇到了这个问题。以下是我运行的命令:
`npm uninstall -g angular-cli
npm cache clean
npm install -g angular-cli@webpack
rm -rf node_modules dist tmp typings
npm install --save-dev angular-cli@webpack`
最后,以下是我正在运行的 node、npm 和 Angular CLI 的版本:
Node v6.4.0
NPM 3.10.3
angular-cli: 1.0.0-beta.11-webpack.8
这是我的 angular-cli.json:
`{
"project": {
"version": "1.0.0-beta.11-webpack.8",
"name": "learnloop"
},
"apps": [
{
"main": "src/main.ts",
"tsconfig": "src/tsconfig.json",
"mobile": false,
"prefix": "app",
"root": "src",
"styles": [
"styles.scss"
]
}
],
"addons": [],
"packages": [],
"e2e": {
"protractor": {
"config": "config/protractor.conf.js"
}
},
"test": {
"karma": {
"config": "config/karma.conf.js"
}
},
"defaults": {
"styleExt": "scss",
"prefixInterfaces": false,
"lazyRoutePrefix": "+"
}
}`
对于如此长篇大论的文字,我深表歉意,但我想确保你们都拥有可能对此有所帮助的一切。我在这里做错了什么?
2个回答
我设法让它工作了。尝试将其粘贴到您的 angular-cli.json 中(相应地进行编辑):
{
"project": {
"version": "1.0.0-beta.11-webpack.8",
"name": "<name-of-app>"
},
"apps": [
{
"root": "src",
"outDir": "dist",
"assets": "assets",
"index": "index.html",
"main": "main.ts",
"test": "test.ts",
"tsconfig": "tsconfig.json",
"prefix": "app",
"mobile": false,
"styles": [
"styles.scss"
],
"scripts": [],
"environments": {
"source": "environments/environment.ts",
"prod": "environments/environment.prod.ts",
"dev": "environments/environment.dev.ts"
}
}
],
"addons": [],
"packages": [],
"e2e": {
"protractor": {
"config": "./protractor.conf.js"
}
},
"test": {
"karma": {
"config": "./karma.conf.js"
}
},
"defaults": {
"styleExt": "scss",
"prefixInterfaces": false,
"lazyRoutePrefix": "+"
}
}
然后在根项目目录中输入
ng init
。它会要求您替换一堆不同的文件或保留它们。文件之间存在一些细微的差异,特别是在
app.module.ts
内部,因此请确保先提交,因为文件结构和文件内部的代码会有一些变化。
Stevie Star
2016-09-02
尝试将你的 nodejs 版本更新到最新版本(当前版本为 v.7.2)。它对我有用,但 ng serve 失败了
Gabriel Amazonas Mesquita
2016-12-02