Я пытаюсь обновить свой angular 2 проект с 2.0.0
до 2.4.1
. Я понимаю, что семантическое управление версиями было принято после выпуска 2.0.0
и выпуски 2.xx
должны быть заменой. Мой опыт, кажется, указывает на обратное. Может быть, я просто не знаю, что я делаю, но я не нашел это простым...
Попытка 1 - обновление версии вручную
Моим наивным первым подходом было вручную обновить мои @angular
зависимости. Вы можете сослаться на мой package.json ниже (обновление 1). Я внес эти изменения, затем npm install
и получил несколько предупреждений, а затем получил следующую ошибку при попытке сделать ng serve
.
Не удается прочитать свойство 'AssetUrl' из неопределенного
И мои предупреждения...
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected]^1.0.0 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN @angular/[email protected] requires a peer of [email protected]^5.0.1 but none was installed.
npm WARN @angular/[email protected] requires a peer of [email protected]^0.7.2 but none was installed.
npm WARN @angular/[email protected] requires a peer of [email protected]^5.0.1 but none was installed.
npm WARN @angular/[email protected] requires a peer of @angular/[email protected] but none was installed.
npm WARN @angular/[email protected] requires a peer of @angular/[email protected] but none was installed.
npm WARN @angular/[email protected] requires a peer of @angular/[email protected] but none was installed.
npm WARN @ngtools/[email protected] requires a peer of @angular/[email protected]^2.3.1 but none was installed.
npm WARN @ngtools/[email protected] requires a peer of @angular/[email protected]^0.5.0 but none was installed.
npm WARN @ngtools/[email protected] requires a peer of [email protected]^2.1.0-beta.25 but none was installed.
Поэтому я попытался исправить эти предупреждения, но я не знаю, как исправить все из них (например, @ngtools/webpack), и некоторые из них, похоже, конфликтуют друг с другом. Поэтому я отказался от ручного подхода к обновлению моей угловой версии 2...
Оригинальная упаковка .json
{
"name": "frontend",
"version": "0.0.0",
"license": "MIT",
"angular-cli": {},
"scripts": {
"start": "ng serve",
"lint": "tslint \"src/**/*.ts\"",
"test": "ng test",
"pree2e": "webdriver-manager update",
"e2e": "protractor",
"build": "ng build",
"buildProd": "ng build --env=prod"
},
"private": true,
"dependencies": {
"@angular/common": "2.0.0",
"@angular/compiler": "2.0.0",
"@angular/core": "2.0.0",
"@angular/forms": "2.0.0",
"@angular/http": "2.0.0",
"@angular/material": "^2.0.0-alpha.9-experimental-pizza",
"@angular/platform-browser": "2.0.0",
"@angular/platform-browser-dynamic": "2.0.0",
"@angular/router": "3.0.0",
"@types/google-libphonenumber": "^7.4.8",
"angular2-datatable": "^0.4.2",
"apollo-client": "^0.4.22",
"core-js": "^2.4.1",
"google-libphonenumber": "^2.0.4",
"graphql-tag": "^0.1.15",
"hammerjs": "^2.0.8",
"ng2-bootstrap": "^1.1.16",
"rxjs": "5.0.0-beta.12",
"ts-helpers": "^1.1.2",
"zone.js": "^0.6.26"
},
"devDependencies": {
"@types/hammerjs": "^2.0.33",
"@types/jasmine": "^2.2.30",
"@types/lodash": "^4.14.39",
"angular-cli": "1.0.0-beta.16",
"codelyzer": "~0.0.26",
"jasmine-core": "2.4.1",
"jasmine-spec-reporter": "2.5.0",
"karma": "1.2.0",
"karma-chrome-launcher": "^2.0.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.0.2",
"karma-remap-istanbul": "^0.2.1",
"protractor": "4.0.9",
"ts-node": "1.2.1",
"tslint": "3.13.0",
"typescript": "2.0.2",
"typings": "1.4.0"
}
}
Обновление 1 файла package.json
{
"name": "frontend",
"version": "0.0.0",
"license": "MIT",
"angular-cli": {},
"scripts": {
"start": "ng serve",
"lint": "tslint \"src/**/*.ts\"",
"test": "ng test",
"pree2e": "webdriver-manager update",
"e2e": "protractor",
"build": "ng build",
"buildProd": "ng build --env=prod"
},
"private": true,
"dependencies": {
"@angular/common": "2.4.1",
"@angular/compiler": "2.4.1",
"@angular/core": "2.4.1",
"@angular/forms": "2.4.1",
"@angular/http": "2.4.1",
"@angular/material": "^2.0.0-alpha.9-experimental-pizza",
"@angular/platform-browser": "2.4.1",
"@angular/platform-browser-dynamic": "2.4.1",
"@angular/router": "3.0.0",
"@types/google-libphonenumber": "^7.4.8",
"angular2-datatable": "^0.4.2",
"apollo-client": "^0.4.22",
"core-js": "^2.4.1",
"google-libphonenumber": "^2.0.4",
"graphql-tag": "^0.1.15",
"hammerjs": "^2.0.8",
"ng2-bootstrap": "^1.1.16",
"rxjs": "5.0.1",
"ts-helpers": "^1.1.2",
"zone.js": "^0.7.2"
},
"devDependencies": {
"@types/hammerjs": "^2.0.33",
"@types/jasmine": "^2.2.30",
"@types/lodash": "^4.14.39",
"angular-cli": "1.0.0-beta.16",
"codelyzer": "~0.0.26",
"jasmine-core": "2.4.1",
"jasmine-spec-reporter": "2.5.0",
"karma": "1.2.0",
"karma-chrome-launcher": "^2.0.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.0.2",
"karma-remap-istanbul": "^0.2.1",
"protractor": "4.0.9",
"ts-node": "1.2.1",
"tslint": "3.13.0",
"typescript": "2.0.2",
"typings": "1.4.0"
}
}
Попытка 2 - использовать npm-check-updates
Поскольку, когда я пытался выбрать свои угловые зависимости для обновлений, я попал в паутину других зависимостей, которые нужно было обновить, я затем попытался просто обновить все.
Основываясь на этом ответе, я попробовал следующее:
npm i -g npm-check-updates
npm-check-updates -u
npm install
Это прошло нормально, но когда я попробовал ng serve, я получил следующую ошибку:
ОШИБКА в AppModule не является NgModule
Используя информацию, собранную здесь, я понизил версию своей машинописи, эта ошибка исчезла, но появилась новая ошибка.
ОШИБКА в ошибке обнаружена при статическом разрешении значений символов. Ссылка на неэкспортированную функцию (позиция 29:10 в исходном файле .ts), разрешение символа restPaths в rest-paths.ts, разрешение символа AppModule в app.module.ts, разрешение символа AppModule в app.module.ts
Я боролся с этими ошибками, но тот факт, что у меня так много проблем, поднимает красные флаги.
Кто-нибудь может помочь? Я принимаю неправильный подход?
Обратите внимание, что я видел некоторые предложения по обновлению проектов angular-cli, которые рекомендуют удалить angular-cli и переустановить его, затем выполнить инициализацию ng и перезаписать ваши файлы конфигурации. Это не сработало для меня, потому что у меня уже была последняя версия.
Редактировать: утверждение о наличии последнего angular-cli было неверным. У меня была angular-cli version 1.0.0-beta.16
тогда как последняя на момент этого редактирования 1.0.0-beta.24
. Тем не менее я попытался обновить свой angular-cli и запустить ng init для моего существующего проекта. Теперь я замечаю, что не выполнил точно шаги, описанные на странице angular-cli github. Я пропустил npm install --save-dev [email protected]
и уничтожил все свои node_modules вместо использования набросанной ими команды rm.