找不到模块:错误:无法解析'./$$_gendir/app/app.module.ngfactory'

问题描述:

就在昨天我的代码工作正常,没有更改应用程序模块,今天使用“ng build --prod“我得到这个错误。我知道这与变化无关,当我拉老分支时,我得到了同样的错误。我不知道该怎么做,建议更新每个软件包,但即使在我仍然得到相同的错误之后。甚至不知道,如果你们能帮助,但这里是我的app.module:

import {BrowserModule} from '@angular/platform-browser'; 
import {NgModule} from '@angular/core'; 
import {FormsModule} from '@angular/forms'; 
import {HttpModule} from '@angular/http'; 

import {AppComponent} from './app.component'; 
import {LoginComponent} from './login/login.component'; 
import {CompareComponent} from './compare/compare.component'; 
import {RouterModule} from "@angular/router"; 
import {CompareCardComponent} from './compare/compare-card/compare-card.component'; 
import {LayoutComponent} from './layout/layout.component'; 
import {CompareValuePipe} from "./compare/compare-card/compare-card.pipe"; 
import {HomeComponent} from './home/home.component'; 
import {NewLocationComponent} from './new-location/new-location.component'; 
import {SignupComponent} from './signup/signup.component'; 
import {ValidateMe} from "./shared/me.suite/validate.me/validate.me"; 
import {TagsComponent} from './tags/tags.component'; 
import {GoogleplaceDirective} from './third-party/angular2-google-map-auto-complete/directives/googleplace.directive'; 
import { LoaderComponent } from './shared/loader/loader.component'; 
import { AlertComponent } from './shared/alert/alert.component'; 
import {Angulartics2GoogleAnalytics, Angulartics2Module} from "angulartics2"; 
import { OverallPipe } from './compare/overall.pipe'; 
import {InteractiveComponent} from "./question/interactive/interactive.component"; 
import { FormComponent } from './question/form/form.component'; 
import { KpiDescComponent } from './compare/kpi-desc/kpi-desc.component'; 
import {HashLocationStrategy, Location, LocationStrategy} from "@angular/common"; 
import {AccountApi} from "./services/account-api.service"; 
import {SettingsApi} from "./services/settings-api.service"; 
import {DataApi} from "./services/data-api.service"; 
import { ZeezorInfoComponent } from './zeezor-info/zeezor-info.component'; 

const ROUTES = [ 
    {path: '', redirectTo: '/home', pathMatch: 'full'}, 
    {path: 'compare', component: CompareComponent}, 
    {path: 'new', component: NewLocationComponent}, 
    {path: 'tags', component: TagsComponent}, 
    {path: 'interactive', component: InteractiveComponent}, 
    {path: 'form', component: FormComponent}, 
    {path: 'login', component: LoginComponent}, 
    {path: 'signup', component: SignupComponent}, 
    {path: 'home', component: HomeComponent}, 
    {path: '**', component: HomeComponent} 
]; 

@NgModule({ 
    declarations: [ 
     LayoutComponent, 
     AppComponent, 
     LoginComponent, 
     CompareComponent, 
     CompareCardComponent, 
     CompareValuePipe, 
     InteractiveComponent, 
     HomeComponent, 
     NewLocationComponent, 
     SignupComponent, 
     ValidateMe, 
     TagsComponent, 
     GoogleplaceDirective, 
     LoaderComponent, 
     AlertComponent, 
     OverallPipe, 
     FormComponent, 
     KpiDescComponent, 
     ZeezorInfoComponent 
    ], 
    imports: [ 
     BrowserModule, 
     FormsModule, 
     HttpModule, 
     RouterModule.forRoot(ROUTES), 
     Angulartics2Module.forRoot([ Angulartics2GoogleAnalytics ]) 
    ], 
    providers: [AccountApi, DataApi, SettingsApi, Location, {provide: LocationStrategy, useClass: HashLocationStrategy}], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { 
    constructor(){ 
     let style = document.createElement('link'); 
     style.rel = "stylesheet"; 
     style.href = SettingsApi.styleEndpoint; 
     window.document.head.appendChild(style); 
     console.log(navigator.userAgent); 
    } 
} 

的package.json

{ 
    "name": "stack-up", 
    "version": "0.0.0", 
    "license": "MIT", 
    "angular-cli": {}, 
    "scripts": { 
    "ng": "ng", 
    "start": "ng serve", 
    "test": "ng test", 
    "lint": "ng lint", 
    "e2e": "ng e2e", 
    "compile": "ng build --environment=mobile --output-path ../mobile/www/", 
    "compile:prod": "ng build --environment=mobile --target=production --output-path ../mobile/www/", 
    "docker": "ng build --environment=docker", 
    "local": "ng serve --environment=local", 
    "dev": "ng build --environment=dev", 
    "prod": "ng build --environment=prod --target=production --output-path /var/www/html/" 
    }, 
    "private": true, 
    "dependencies": { 
    "@angular/common": "^2.4.0", 
    "@angular/compiler": "^2.4.0", 
    "@angular/core": "^2.4.0", 
    "@angular/forms": "^2.4.0", 
    "@angular/http": "^2.4.0", 
    "@angular/platform-browser": "^2.4.0", 
    "@angular/platform-browser-dynamic": "^2.4.0", 
    "@angular/router": "^3.4.0", 
    "angular2-jwt": "^0.2.2", 
    "angular2-social-login": "^2.1.0", 
    "angulartics2": "^2.2.1", 
    "core-js": "^2.4.1", 
    "rxjs": "^5.0.1", 
    "ts-helpers": "^1.1.1", 
    "tslint": "^3.15.1", 
    "zone.js": "^0.7.2" 
    }, 
    "devDependencies": { 
    "@angular/cli": "1.0.0-beta.31", 
    "@angular/compiler-cli": "^2.4.0", 
    "@types/jasmine": "2.5.38", 
    "@types/node": "^6.0.42", 
    "codelyzer": "~2.0.0-beta.1", 
    "jasmine-core": "2.5.2", 
    "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-coverage-istanbul-reporter": "^0.2.0", 
    "protractor": "~5.1.0", 
    "ts-node": "1.2.1", 
    "tslint": "^4.3.0", 
    "typescript": "~2.0.0" 
    } 
} 

我昨天(同样的错误消息)也有类似的问题,我固定它基于这个角CLI问题:

https://github.com/angular/angular-cli/issues/7125

此修复程序是针enhanced-resolve3.3.0版本在我的package.json,删除node_模块,运行npm install,然后重新构建。这似乎已经解决了问题线程中的一些人的问题。

增强型解决方案的较新版本似乎导致一些问题。

如果它仍然中断,请确保通过运行npm ls enhanced-resolve确保您具有正确的增强型解析版。

+0

Cha-Ching!谢谢你,我看到了这个线程,试过了,但没有得到特定的版本,或者卸载了node_modules。干杯! –

+0

'pin'是用来代替包中的'add'的术语吗? – Zze

+0

'pin'表示设置特定版本。对于package.json来说,这意味着从版本字符串中删除任何波浪号(〜)或脱字号(^)字符。在这种情况下,“enhanced-resolve”:“3.3.0”被添加到package.json中,以便使用特定的版本。 –

对于其他任何人来说,与angular-cliangular的旧版本有一个descrepency。 Source

要解决此问题,请将angular-cli升级到@latest

npm uninstall -g angular-cli 
npm cache clean 
npm install -g @angular/[email protected] 

Depending on your system, you may need to prefix the above commands with sudo.

Also, most likely you want to also update your local project version, because inside your project directory it will be selected with higher priority than the global one:

rm -rf node_modules 
npm uninstall --save-dev angular-cli 
npm install --save-dev @angular/[email protected] 
npm install 

How to upgrade Angular CLI to the latest version

如果您不想使用@latest angular-cli,请至少将@ angular-cli更新为v1.2.6。目前它已经解决了问题,而且您不需要安装增强型解决方案等。 https://github.com/angular/angular-cli/issues/7113

enter image description here正如前面的回答中提到的那样,升级解析版本3.4.1导致了这个问题。使用版本3.3.0可以解决问题。我们可以使用nopm-srinkwrap.json固定版本