2017-10-18 9 views
5

Courir ng build sur mon angulaire 4 projet donne cette erreur:angulaire Aucune usine de module disponible pour le type de dépendance: ContextElementDependency

 14% building modules 40/46 modules 6 active ...es\@angular\http\@angular\http.es5.js 
An error occured during the build: 
Error: No module factory available for dependency type: ContextElementDependency 
    at Compilation.addModuleDependencies (D:\dev\workspace\rep\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:213:21) 
    at Compilation.processModuleDependencies (D:\dev\workspace\rep\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:202:8) 
    at _this.buildModule.err (D:\dev\workspace\rep\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:350:14) 
    at building.forEach.cb (D:\dev\workspace\rep\node_modules\@angular\cli\node_modules\webpack\lib\Compilation.js:147:27) 
    at Array.forEach (native) 
    at callback 

J'ai lu beaucoup Q/A sur github & stackoverflow sur cette question, mais non de Ils m'ont aidé.

Comme les réponses suggérées, j'ai supprimé webpack mais cela n'a pas aidé. Supprimé node_modules, webpack supprimé de package.json, exécutez npm install, n'a toujours pas aidé. Cache nettoyé de npm, webpack supprimé de package.json, exécutez npm install, toujours aucun résultat. Et beaucoup d'autres suggestions similaires n'a pas aidé.

Quand je supprimer webpack de package.json et exécutez npm install i get suivantes:

Cannot find module 'webpack/lib/node/NodeTemplatePlugin' Error: Cannot 
find module 'webpack/lib/node/NodeTemplatePlugin' 
    at Function.Module._resolveFilename (module.js:469:15) 
    at Function.Module._load (module.js:417:25) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (D:\dev\workspace\rep\node_modules\html-webpack-plugin\lib\compiler.js:11:26) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (D:\dev\workspace\rep\node_modules\html-webpack-plugin\index.js:7:21) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 

Lorsque webpack de retour à package.json, exécutez npm install puis exécutez npm list webpack-je obtenir le résultat suivant:

+-- @angular/[email protected] 
| `-- [email protected] 
`-- [email protected] 

Voici package.json du projet:

{ 
    "name": "somename", 
    "version": "1.0.0", 
    "description": "", 
    "author": "", 
    "url": "", 
    "copyright": "somec", 
    "license": "MIT", 
    "scripts": { 
    "ng": "ng", 
    "start": "ng serve", 
    "build": "ng build", 
    "test": "ng test", 
    "lint": "ng lint", 
    "e2e": "ng e2e" 
    }, 
    "private": true, 
    "dependencies": { 
    "@angular/common": "^4.4.5", 
    "@angular/compiler": "^4.4.5", 
    "@angular/core": "^4.4.5", 
    "@angular/forms": "^4.4.5", 
    "@angular/http": "^4.4.5", 
    "@angular/platform-browser": "^4.4.5", 
    "@angular/platform-browser-dynamic": "^4.4.5", 
    "@angular/router": "^4.4.5", 
    "@angular/upgrade": "^4.4.5", 
    "amazon-cognito-identity-js": "^1.21.0", 
    "chart.js": "2.7.0", 
    "core-js": "2.5.1", 
    "font-awesome": "^4.7.0", 
    "jquery": "^3.2.1", 
    "moment": "2.18.1", 
    "ng2-charts": "1.6.0", 
    "ngx-bootstrap": "1.9.3", 
    "raw-loader": "^0.5.1", 
    "rxjs": "5.4.3", 
    "simple-line-icons": "^2.4.1", 
    "ts-helpers": "1.1.2", 
    "zone.js": "0.8.17" 
    }, 
    "devDependencies": { 
    "@angular/cli": "^1.4.7", 
    "@angular/compiler-cli": "^4.4.5", 
    "@types/jasmine": "2.6.0", 
    "@types/jquery": "^3.2.13", 
    "@types/node": "8.0.28", 
    "codelyzer": "3.2.0", 
    "jasmine-core": "2.8.0", 
    "jasmine-spec-reporter": "4.2.1", 
    "karma": "1.7.1", 
    "karma-chrome-launcher": "2.2.0", 
    "karma-cli": "1.0.1", 
    "karma-coverage-istanbul-reporter": "1.3.0", 
    "karma-jasmine": "1.1.0", 
    "karma-jasmine-html-reporter": "0.2.2", 
    "node-sass": "^4.5.3", 
    "postcss-loader": "^2.0.6", 
    "protractor": "5.1.2", 
    "sass-loader": "^6.0.6", 
    "ts-node": "3.3.0", 
    "tslint": "5.7.0", 
    "typescript": "2.5.2", 
    "webpack": "^3.6.0" 
    }, 
    "engines": { 
    "node": ">= 6.9.0", 
    "npm": ">= 3.0.0" 
    } 
} 

Lorsque je clone ce repo sur une autre machine, exécutez npm install puis ng build ça va, ça marche, mais sur le mien ça donne cette erreur. J'ai essayé complètement de retirer le repo de ma machine, clonant à partir de zéro et en cours d'exécution npm install et ng build, toujours la même erreur.

Quelqu'un peut-il dire s'il vous plaît quelle peut être la raison de ce comportement et comment le réparer?

Répondre

15

étapes de mon travail pour résoudre ce problème en cas si quelqu'un le rencontre:

  1. Package.json: retirer webpack de DevDependencies
  2. rm -R node_modules (supprimer dossier node_modules)
  3. NGP i - g webpack
  4. NPM i -g webpack-dev-server
  5. supprimer package-lock.json (si elle est là)
  6. NPM i
  7. NPM commencent

Cependant, je ne comprends pas complètement les raisons pour lesquelles cela est arrivé

+0

Merci! La plupart des autres correctifs consistaient simplement à supprimer node_modules, puis à vider le cache et à le réinstaller. On dirait que l'installation globale de webpack l'a fait pour moi. – Nayfin

+0

@Nayfin vous êtes les bienvenus! – komron

1

Do npm ls webpack

Si vous voyez deux versions de webpack (sous @ angulaire/cli et les node_modules racine) , Alors c'est le problème. Supprimer/Renommer le webpack sous @angular/cli et dans le dossier .bin de @angular/cli.

Problème résolu pour moi

+0

Mais dans le cas où vous mettez à jour/réinstaller @ angular/cli vous aurez à nouveau ce problème car il installera à nouveau webpack – komron

+0

C'est pourquoi vous devriez supprimer si de dev dépendances. C'est pourquoi vous ne supprimez pas les paquets juste pour les réinstaller à nouveau – phacic

+0

C'était mon problème. La suppression de devDependencies et l'utilisation de ma version globale de webpack ont ​​résolu le problème. – ssmith