编译我的Angular Electron应用程序得到Error: ENOENT: no such file or directory,open 'node_modules/@angular-devkit/build-angular/src/angular-cli-files/_models/webpack-configs/browser.js'
。该应用程序确实可以编译并运行。运行npm install
后出现问题。
我的node-modules
有../angular-cli-files/models/..
,其中包含browser.js
。奇怪的是,错误消息中加了下划线,即_models
。我完全不知道为什么会这样。我已经尝试了几个Could not find module "@angular-devkit/build-angular"答案中的建议; Cannot find module 'webpack' - Angular和其他人,但没有运气。我的搜索未找到带下划线的示例。
package.json
:
{
"name": "five-x","version": "0.0.1","description": "FiveX Electron App","main": "main.js","private": true,"scripts": {
"postinstall": "npm run postinstall:electron && electron-builder install-app-deps","postinstall:web": "node postinstall-web","postinstall:electron": "node postinstall","ng": "ng","start": "PORT=4201 npm run postinstall:electron && npm-run-all -p ng:serve electron:serve","start:dev": "npm run postinstall:electron && npm-run-all -p ng:serve electron:serve:dev","build": "npm run postinstall:electron && npm run electron:serve-tsc && ng build","build:dev": "npm run build -- -c dev","build:prod": "npm run build -- -c production","ng:serve": "ng serve","ng:serve:web": "npm run postinstall:web && ng serve -o","electron:serve-tsc": "tsc -p tsconfig-serve.json","electron:serve": "wait-on http-get://localhost:4201/ && npm run electron:serve-tsc && electron . --serve","electron:serve:dev": "wait-on http-get://localhost:4201/ && npm run electron:serve-tsc && electron . --serve --tools","electron:local": "npm run build:prod && electron .","electron:linux": "npm run build:prod && electron-builder build --linux","electron:windows": "npm run build:prod && electron-builder build --windows","electron:mac": "npm run build:prod && electron-builder build --mac","test": "npm run postinstall:web && ng test --no-watch --no-progress --source-map=false","test:watch": "npm run postinstall:web && ng test --watch --no-progress --source-map=false","e2e": "npm run postinstall:web && ng e2e","lint": "ng lint --format stylish --type-check","check-licenses": "license-checker --onlyAllow='MIT;ISC;BSD-2-Clause;BSD-3-Clause;Apache-2.0;LGPL;WTFPL;CC-BY-4.0;CC-BY-3.0;BSD;Public Domain;CC0-1.0;Unlicense;Zlib' --excludePackages 'five-x@0.0.1;map-stream@0.1.0;png-js@0.1.1;@mapbox/jsonlint-lines-primitives@2.0.2;gl-mat2@1.0.1;gl-mat3@1.0.0;gl-mat4@1.2.0;gl-vec3@1.1.3;weak-map@1.0.5'","check-format": "prettier --check 'src/**/*.{ts,scss,html}'","format": "prettier --write 'src/**/*.{ts,"license-report": "license-report --output=table --fields={name,licenseType,link}","dependency-graph": "ngd -d documentation/dependency-graph","compodoc": "npx compodoc -p src/tsconfig.app.json -d documentation/generated","docs": "npm run compodoc && open documentation/generated/index.html"
},"devDependencies": {
"@angular-devkit/build-angular": "^0.803.19","@angular-devkit/build-ng-packagr": "~0.803.19","@angular/animations": "^8.2.14","@angular/cdk": "^8.2.3","@angular/cli": "^8.3.19","@angular/common": "^8.2.14","@angular/compiler": "^8.2.14","@angular/compiler-cli": "^8.2.14","@angular/core": "^8.2.14","@angular/forms": "^8.2.14","@angular/language-service": "^8.2.14","@angular/material": "^8.2.3","@angular/platform-browser": "^8.2.14","@angular/platform-browser-dynamic": "^8.2.14","@angular/router": "^8.2.14","@compodoc/compodoc": "^1.1.11","@compodoc/ngd-cli": "^2.0.0","@kiosk/store": "^1.0.3","@ngx-translate/core": "^11.0.1","@ngx-translate/http-loader": "^4.0.0","@types/chartist": "^0.9.46","@types/jasmine": "^3.4.6","@types/jasminewd2": "^2.0.8","@types/node": "^12.12.9","@types/plotly.js": "^1.44.16","angular-plotly.js": "^1.4.2","chartist": "^0.11.4","chartist-plugin-axistitle": "^0.0.4","chartist-plugin-legend": "^0.6.2","codelyzer": "^5.2.0","conventional-changelog-cli": "^2.0.28","core-js": "^3.4.1","electron": "^7.1.1","electron-builder": "^21.2.0","electron-reload": "^1.5.0","hammerjs": "^2.0.8","jasmine-core": "^3.5.0","jasmine-spec-reporter": "^4.2.1","karma": "^4.4.1","karma-chrome-launcher": "^3.1.0","karma-coverage-istanbul-reporter": "^2.1.0","karma-jasmine": "^2.0.1","karma-jasmine-html-reporter": "^1.4.2","license-checker": "^25.0.1","license-report": "^3.0.0","ng-mocks": "^8.1.0","ng-packagr": "^5.7.1","ng2-nouislider": "^1.8.2","node-sass": "^4.13.0","nouislider": "^14.0.3","npm-run-all": "^4.1.5","plotly.js": "^1.51.1","prettier": "^1.19.1","protractor": "^5.4.2","python-shell": "^1.0.8","rxjs": "^6.5.3","ts-node": "^8.5.2","tsickle": "^0.37.1","tslint": "^5.20.1","typescript": "3.7.2","wait-on": "^3.3.0","webdriver-manager": "^12.1.7","zone.js": "~0.10.2"
},"dependencies": {
"npm-check-updates": "^3.2.1","tslib": "^1.10.0"
}
}
angular.json
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json","version": 1,"newProjectRoot": "projects","projects": {
"angular-electron": {
"root": "","sourceRoot": "src","projectType": "application","architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser","options": {
"outputPath": "dist","index": "src/index.html","main": "src/main.ts","tsConfig": "src/tsconfig.app.json","polyfills": "src/polyfills.ts","stylePreprocessorOptions": {
"includePaths": [
"src/app","src/styles"
]
},"assets": [
"src/assets","src/favicon.ico","src/favicon.png","src/favicon.icns","src/favicon.256x256.png","src/favicon.512x512.png"
],"styles": [
"src/styles/global.scss"
],"scripts": []
},"configurations": {
"dev": {
"optimization": false,"outputhashing": "all","sourceMap": true,"extractCss": true,"namedChunks": false,"aot": false,"extractLicenses": true,"vendorChunk": false,"buildOptimizer": false,"fileReplacements": [
{
"replace": "src/environments/environment.ts","with": "src/environments/environment.dev.ts"
}
]
},"production": {
"optimization": true,"sourceMap": false,"aot": true,"buildOptimizer": true,"with": "src/environments/environment.prod.ts"
}
]
}
}
},"serve": {
"builder": "@angular-devkit/build-angular:dev-server","options": {
"browserTarget": "angular-electron:build","port": 4201
},"configurations": {
"dev": {
"browserTarget": "angular-electron:build:dev"
},"production": {
"browserTarget": "angular-electron:build:production"
}
}
},"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n","options": {
"browserTarget": "angular-electron:build"
}
},"test": {
"builder": "@angular-devkit/build-angular:karma","options": {
"main": "src/test.ts","polyfills": "src/polyfills-test.ts","tsConfig": "src/tsconfig.spec.json","karmaConfig": "src/karma.conf.js","scripts": [],"src/favicon.512x512.png"
]
}
},"lint": {
"builder": "@angular-devkit/build-angular:tslint","options": {
"tsConfig": [
"src/tsconfig.app.json","src/tsconfig.spec.json"
],"exclude": [
"**/node_modules/**"
]
}
}
}
},"angular-electron-e2e": {
"root": "e2e","architect": {
"e2e": {
"builder": "@angular-devkit/build-angular:protractor","options": {
"protractorConfig": "e2e/protractor.conf.js","devserverTarget": "angular-electron:serve"
}
}
}
},"core-domain": {
"projectType": "library","root": "projects/core-domain","sourceRoot": "projects/core-domain/src","prefix": "lib","architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build","options": {
"tsConfig": "projects/core-domain/tsconfig.lib.json","project": "projects/core-domain/ng-package.json"
}
},"options": {
"main": "projects/core-domain/src/test.ts","tsConfig": "projects/core-domain/tsconfig.spec.json","karmaConfig": "projects/core-domain/karma.conf.js"
}
},"options": {
"tsConfig": [
"projects/core-domain/tsconfig.lib.json","projects/core-domain/tsconfig.spec.json"
],"exclude": [
"**/node_modules/**"
]
}
}
}
}
},"defaultProject": "angular-electron","schematics": {
"@schematics/angular:component": {
"prefix": "fx","styleext": "scss"
},"@schematics/angular:directive": {
"prefix": "fx"
}
}
}