Построение проекта после обновления до Angular 9 приводит к ошибке «Невозможно прочитать свойство« длина »неопределенного - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь обновить свой проект до Angular 9, следуя обновлению. angular .io руководство по миграции. После выполнения ng update @angular/core @angular/cli я получаю сообщение об ошибке «ОШИБКА в Невозможно прочитать свойство« длина »неопределенного» при выполнении ng build --prod, в то время как ng build все еще работает. ng build --aot также работает.

npm журналы дают следующий вывод

   0 info it worked if it ends with ok
   1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'build', '--prod' ]
   2 info using npm@6.14.3
   3 info using node@v10.18.0
   4 verbose run-script [ 'prebuild', 'build', 'postbuild' ]
   5 info lifecycle my-project@0.1.0~prebuild: my-project@0.1.0
   6 info lifecycle my-project@0.1.0~build: my-project@0.1.0
   7 verbose lifecycle my-project@0.1.0~build: unsafe-perm in lifecycle true
   8 verbose lifecycle my-project@0.1.0~build: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/path/to/project/my-project/subproject/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
   9 verbose lifecycle my-project@0.1.0~build: CWD: /path/to/project/my-project/subproject
   10 silly lifecycle my-project@0.1.0~build: Args: [ '-c', 'ng build --prod' ]
   11 silly lifecycle my-project@0.1.0~build: Returned: code: 1  signal: null
   12 info lifecycle my-project@0.1.0~build: Failed to exec build script
   13 verbose stack Error: my-project@0.1.0 build: `ng build --prod`
   13 verbose stack Exit status 1
   13 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
   13 verbose stack     at EventEmitter.emit (events.js:198:13)
   13 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
   13 verbose stack     at ChildProcess.emit (events.js:198:13)
   13 verbose stack     at maybeClose (internal/child_process.js:982:16)
   13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
   14 verbose pkgid my-project@0.1.0
   15 verbose cwd /path/to/project/my-project/subproject
   16 verbose Linux 4.15.0-54-generic
   17 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "build" "--prod"
   18 verbose node v10.18.0
   19 verbose npm  v6.14.3
   20 error code ELIFECYCLE
   21 error errno 1
   22 error my-project@0.1.0 build: `ng build --prod`
   22 error Exit status 1
   23 error Failed at the my-project@0.1.0 build script.
   23 error This is probably not a problem with npm. There is likely additional logging output above.
   24 verbose exit [ 1, true ]

Для решения проблемы я обновил npm, что не помогло. Также я отключил все проверки angular, установив

       "fullTemplateTypeCheck": false,
       "strictInjectionParameters": false

в tsconfig. json. Что тоже не сработало. Удаление node_modules и package-lock. json и создание нового npm install также не решило проблему.

npm version is 6.14.3 node version is 10.18.0

1 Ответ

0 голосов
/ 26 марта 2020

Я понял, что изменение конфигурации angular.json решило проблему.

до того, как у меня было:

"optimization": true

, и я изменил его на:

"optimization": { "scripts": true, "styles": false }

И теперь он строится в производственном режиме. Это не реальное решение, а обходной путь. Так что, если кто-нибудь знает, как решить проблему и сохранить оптимизацию стиля, я был бы признателен, если вы поделитесь ею.

...