Beim Ausführen von Angular Build nach dem Upgrade auf 5.12.0 erhalten wir die folgenden Fehler und Warnungen
WARNING in ./node_modules/typescript/lib/typescript.js
Module not found: Error: Can't resolve 'crypto' in '/Users/dorons/dev/management/mgmt-console/node_modules/typescript/lib'
WARNING in ./node_modules/source-map-support/source-map-support.js
Module not found: Error: Can't resolve 'fs' in '/Users/dorons/dev/management/mgmt-console/node_modules/source-map-support'
WARNING in ./node_modules/source-map-support/source-map-support.js
Module not found: Error: Can't resolve 'module' in '/Users/dorons/dev/management/mgmt-console/node_modules/source-map-support'
ERROR in ./node_modules/tslint/lib/utils.js
Module not found: Error: Can't resolve 'fs' in '/Users/dorons/dev/management/mgmt-console/node_modules/tslint/lib'
ERROR in ./node_modules/tslint/node_modules/resolve/lib/async.js
Module not found: Error: Can't resolve 'fs' in '/Users/dorons/dev/management/mgmt-console/node_modules/tslint/node_modules/resolve/lib'
ERROR in ./node_modules/tslint/node_modules/resolve/lib/sync.js
Module not found: Error: Can't resolve 'fs' in '/Users/dorons/dev/management/mgmt-console/node_modules/tslint/node_modules/resolve/lib'
ERROR in ./node_modules/source-map-support/source-map-support.js
Module not found: Error: Can't resolve 'path' in '/Users/dorons/dev/management/mgmt-console/node_modules/source-map-support'
ERROR in ./node_modules/tslint/node_modules/resolve/lib/async.js
Module not found: Error: Can't resolve 'path' in '/Users/dorons/dev/management/mgmt-console/node_modules/tslint/node_modules/resolve/lib'
ERROR in ./node_modules/tslint/node_modules/resolve/lib/node-modules-paths.js
Module not found: Error: Can't resolve 'path' in '/Users/dorons/dev/management/mgmt-console/node_modules/tslint/node_modules/resolve/lib'
ERROR in ./node_modules/tslint/node_modules/resolve/lib/sync.js
Module not found: Error: Can't resolve 'path' in '/Users/dorons/dev/management/mgmt-console/node_modules/tslint/node_modules/resolve/lib'
Keine Fehler beim Build
👋 @doronsever - es tut mir leid zu hören, dass dich das beunruhigt. Dies ist nicht schon einmal vorgekommen und Ihre Fehlermeldungen reichen nicht aus, um zu gehen - können Sie hier einen Link zu Ihrem Repository posten, auf den wir zugreifen könnten?
Etwas zu versuchen: Löschen Sie Ihr node_modules
Verzeichnis und entweder package-lock.json
oder yarn.lock
_(je nachdem was vorhanden ist)_, dann installieren Sie es mit npm i
/ yarn
und versuchen Sie es erneut?
Dies sieht so aus, als ob Ihre @types/node
Typdefinitionen für Node von TypeScript nicht gefunden werden.
@JoshuaKGoldberg Ich habe auf das neueste Typen-/Knotenmodul (10.12.18) aktualisiert und erhalte immer noch die gleichen Fehler.
Ich kann Ihnen keinen Zugriff auf unser Repo gewähren, aber wenn Sie andere Protokolle benötigen, lassen Sie es mich bitte wissen...
Wenn ich zurück zu 5.11.0 gehe, funktioniert alles wie erwartet
Einige klärende Fragen:
package.json
, package-lock.json
, yarn.lock
und tsconfig.json
existieren und sind verfügbar? _(Bitte posten Sie sie hier, falls vorhanden)_@types/node
explizit als devDependency in package.json
hinzuzufügen?@types/node
explizit als devDependency hinzugefügt{
"name": "mgmt-console",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"gulp": "gulp",
"start": "node --max-old-space-size=5196 node_modules/@angular/cli/bin/ng serve --host=0.0.0.0 --proxy-config proxy.conf.json",
"start-prod": "ng serve --prod --proxy-config proxy.conf.json",
"start-private-proxy": "node --max-old-space-size=5196 node_modules/@angular/cli/bin/ng serve --host=0.0.0.0 --proxy-config private-proxy.conf.json",
"start-private-proxy-noreload": "node --max-old-space-size=5196 node_modules/@angular/cli/bin/ng serve --host=0.0.0.0 --proxy-config private-proxy.conf.json --live-reload false",
"start-noreload": "node --max-old-space-size=5196 node_modules/@angular/cli/bin/ng serve --proxy-config proxy.conf.json --live-reload false",
"build": "node --max-old-space-size=5196 node_modules/@angular/cli/bin/ng build --prod --aot && gulp swExcludePathFix",
"build-sourcemap": "node --max-old-space-size=5196 node_modules/@angular/cli/bin/ng build --prod --aot --source-map && gulp swExcludePathFix",
"build-local": "ng build --prod --base-href /dist/ --deploy-url /dist/ ",
"test": "jest --coverage || true",
"test:c": "jest --runInBand --coverage",
"test:watch": "jest --watch",
"format:fix": "pretty-quick --staged",
"lint": "ng lint",
"e2e": "./node_modules/.bin/testcafe-live chrome e2e/tests/",
"e2e:ci": "./node_modules/.bin/testcafe chrome:headless e2e/tests/ -S -s screenshots -u -r xunit:res.xml || true",
"lint:shared-lib": "ng lint shared-lib",
"compodoc": "./node_modules/.bin/compodoc -p ./tsconfig.json --customFavicon ./src/favicon.ico --hideGenerator --name Sentinel-One",
"serve:admin-portal": "ng serve admin-portal --open",
"serve:admin-portal:proxy": "ng serve admin-portal --proxy-config proxy.conf.json --open",
"build:admin-portal": "ng build admin-portal --prod --aot",
"lint:admin-portal": "ng lint admin-portal",
"test:admin-portal": "ng test admin-portal --source-map=false",
"build:shared-lib": "ng build shared-lib --prod",
"test:shared-lib": "ng test shared-lib --source-map=false"
},
"private": true,
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"post-commit": "git update-index -g"
}
},
"lint-staged": {
"*.ts": [
"./node_modules/.bin/prettier --config ./.prettierrc --write",
"tslint --fix"
]
},
"dependencies": {
"@angular/animations": "7.1.4",
"@angular/cdk": "^7.2.0",
"@angular/common": "7.1.4",
"@angular/compiler": "7.1.4",
"@angular/core": "7.1.4",
"@angular/forms": "7.1.4",
"@angular/http": "7.1.4",
"@angular/material": "^7.2.0",
"@angular/platform-browser": "7.1.4",
"@angular/platform-browser-dynamic": "7.1.4",
"@angular/platform-server": "7.1.4",
"@angular/pwa": "^0.11.4",
"@angular/router": "7.1.4",
"@angular/service-worker": "7.1.4",
"@ngrx/effects": "6.1.2",
"@ngrx/router-store": "6.1.2",
"@ngrx/store": "6.1.2",
"@ngrx/store-devtools": "6.1.2",
"@nguniversal/express-engine": "6.0.0",
"@sentinel-one/font-mgmt": "1.2.8",
"@types/angular": "^1.6.52",
"@types/d3": "^5.5.0",
"@types/lodash": "^4.14.119",
"@types/mark.js": "^8.11.2",
"ag-grid-angular": "^19.1.2",
"ag-grid-community": "^19.1.3",
"ag-grid-enterprise": "^19.1.3",
"angular-sortablejs": "^2.6.0",
"angular-svg-round-progressbar": "^2.0.0",
"angular2-virtual-scroll": "^0.1.8",
"angulartics2": "^2.5.0",
"chevrotain": "^3.7.4",
"classlist.js": "^1.1.20150312",
"clipboard-polyfill": "^2.7.0",
"copy-webpack-plugin": "^4.6.0",
"core-js": "^2.6.1",
"css-loader": "^1.0.1",
"d3": "^5.7.0",
"file-saver": "^1.3.8",
"guid-typescript": "1.0.7",
"hammerjs": "^2.0.8",
"install": "^0.11.0",
"interactjs": "^1.3.4",
"lodash": "^4.17.11",
"mark.js": "^8.11.1",
"moment": "^2.23.0",
"mydatepicker": "^2.6.6",
"mydaterangepicker": "^4.2.1",
"ng2-ace-editor": "^0.3.8",
"ng2-nouislider": "^1.7.13",
"ngx-auto-unsubscribe": "^2.3.0",
"ngx-cookie": "^3.0.1",
"ngx-cookie-service": "^1.0.10",
"ngx-device-detector": "^1.3.5",
"ngx-moment": "^3.3.0",
"ngx-pipes": "^2.3.6",
"ngx-take-until-destroy": "^2.2.1",
"ngx-uploader": "^4.2.4",
"ngx-validators": "^3.0.0",
"node-sass": "^4.11.0",
"nouislider": "^10.1.0",
"raven-js": "^3.27.0",
"rxjs": "^6.3.3",
"rxjs-compat": "^6.3.3",
"sortablejs": "^1.7.0",
"web-animations-js": "^2.3.1",
"webpack-dev-middleware": "^3.4.0",
"webpack-dev-server": "^3.1.14",
"zone.js": "^0.8.26"
},
"devDependencies": {
"@angular-devkit/build-angular": "^0.10.6",
"@angular-devkit/build-ng-packagr": "^0.7.5",
"@angular-devkit/core": "^0.6.8",
"@angular/cli": "^7.1.4",
"@angular/compiler-cli": "7.1.4",
"@angular/language-service": "7.1.4",
"@compodoc/compodoc": "^1.1.7",
"@ngrx/schematics": "^6.1.2",
"@sentinel-one/management-node-sdk": "^1.0.18",
"@sentinel-one/mgmt-schematics": "^1.4.0",
"@types/jasmine": "^2.8.14",
"@types/jest": "^23.3.10",
"@types/node": "^10.12.18",
"add": "^2.0.6",
"angular2-template-loader": "^0.6.2",
"chalk": "^2.4.1",
"codelyzer": "^4.5.0",
"exports-loader": "^0.7.0",
"fs": "0.0.1-security",
"gulp": "^4.0.0",
"gulp-replace": "^0.6.1",
"husky": "^1.2.1",
"istanbul-reports": "^1.5.1",
"jest": "^23.6.0",
"jest-preset-angular": "^6.0.2",
"jest-sonar-reporter": "^2.0.0",
"lint-staged": "^7.3.0",
"ng-packagr": "^4.4.5",
"ngx-wallaby-jest": "0.0.1",
"npm-run-all": "^4.1.5",
"prettier": "^1.15.3",
"pretty-quick": "^1.7.0",
"protractor": "^5.4.1",
"rxjs-tslint": "^0.1.6",
"testcafe": "^0.23.3",
"testcafe-angular-selectors": "^0.3.1",
"testcafe-live": "^0.1.4",
"ts-node": "^7.0.1",
"tsickle": "^0.33.1",
"tslib": "^1.9.0",
"tslint": "^5.12.0",
"tslint-config-prettier": "^1.17.0",
"tslint-jasmine-rules": "^1.5.1",
"typescript": "3.1.6",
"wallaby-webpack": "^3.9.12"
}
}
@doronsever Ich kann Ihre Probleme nicht lokal mit einem einfachen ng new --minimal
Projekt reproduzieren . npm run build
und npm run lint
funktionieren einwandfrei.
// gulpfile.js
const gulp = require("gulp");
gulp.task("default", (done) => {
console.log("Hello!");
done();
});
gulp.task("swExcludePathFix", (done) => {
console.log("Hello!");
done();
});
C:\Code\ngtest ([email protected])
λ npm run build
> [email protected] build C:\Code\ngtest
> node --max-old-space-size=5196 node_modules/@angular/cli/bin/ng build --prod --aot && gulp swExcludePathFix
Date: 2018-12-30T11:10:36.759Z
Hash: da33b21c0147538991c0
Time: 16482ms
chunk {0} runtime.ec2944dd8b20ec099bf3.js (runtime) 1.41 kB [entry] [rendered]
chunk {1} main.fbc31409f55f230216fa.js (main) 174 kB [initial] [rendered]
chunk {2} polyfills.de3db41568411a33a7d2.js (polyfills) 37.5 kB [initial] [rendered]
chunk {3} styles.3bb2a9d4949b7dc120a9.css (styles) 0 bytes [initial] [rendered]
[06:10:37] Using gulpfile C:\Code\ngtest\gulpfile.js
[06:10:37] Starting 'swExcludePathFix'...
Hello!
[06:10:37] Finished 'swExcludePathFix' after 4.34 ms
C:\Code\ngtest ([email protected])
λ npm run lint
> [email protected] lint C:\Code\ngtest
> ng lint
ERROR: C:/Code/ngtest/src/index.ts:1:13 - " should be '
ERROR: C:/Code/ngtest/src/index.ts:1:30 - file should end with a newline
Lint errors found in the listed files.
All files pass linting.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] lint: `ng lint`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] lint script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\Dioge\AppData\Roaming\npm-cache\_logs\2018-12-30T11_11_20_778Z-debug.log
Was Sie sehen, sieht nach einem Problem mit npm link
ed-Paketen aus. Wenn TypeScript @types/node
aus einem Pfad in Ihrem node_modules
Verzeichnis nicht auflösen kann, vermute ich, dass das der Grund ist.
Schließe dieses Problem als nicht reproduzierbar, da es so aussieht, als ob es an deiner Seite wäre, aber bitte ping mich auf https://gitter.im/palantir/tslint, wenn dies nicht hilft!
@JoshuaKGoldberg nochmal, wenn ich auf 5.11.0 downgrade, funktioniert alles gut ...
@doronsever ja, es ist
Bearbeiten: Um es für zukünftige Leser klarer zu machen, ist der Issue Tracker normalerweise nur für Probleme (Bugs, Feature Requests, Dokumentationsverbesserungen und dergleichen) in TSLint gedacht. 5.12.0 war strukturell fast identisch mit 5.11.0 und andere Angular-Projekte funktionieren gut damit, daher ist es sehr unwahrscheinlich, dass dies ein Problem in TSLint selbst ist. Gitter und StackOverflow werden für andere Anfragen empfohlen, wie zum Beispiel für diese mysteriöse Art von Bruch. Wenn Sie dies auch sehen _(oder sonst einen Hinweis haben, dass ich hier schrecklich falsch liege)_, posten Sie bitte und dieses Problem kann wieder geöffnet werden!
Ich bin mir nicht sicher, ob dies kein Tslint-Fehler ist. Ich habe das gleiche Problem, Version 5.12.0 gibt identische Fehler und 5.11.0 funktioniert einwandfrei.
Ich habe es mit den Winkelversionen 7.12 und 7.1.4 versucht und beide funktionieren nicht mit 5.12.0
Dieselbe Anfrage
Da ich Fehler in einem neuen Angular-Projekt nicht reproduzieren konnte (ich habe versucht, meine ursprüngliche package.json-Datei, angle.json, tslint.json, zu kopieren), habe ich herausgefunden, dass der Fehler tatsächlich vom Anwendungscode herrührt. Ich habe einige Zeit durch Code gegraben und herausgefunden, dass das Projekt wegen der Funktion arrayify
.
Diese Funktion wird von 'tslint/lib/utils'
importiert, daher gehe ich davon aus, dass einige andere von hier importierte Funktionen ebenfalls dieses Problem verursachen könnten.
Wenn das Problem für jemanden immer noch nicht behoben wurde, wird dieser Fehler beim Bündeln von Dateien für die App verursacht und kürzlich wurde die Knotenkonfiguration im Webpack geändert von:
node: {
global: 'window',
crypto: 'empty',
module: false,
clearImmediate: false,
setImmediate: false
}
zu
node: false
und diese Änderung verursachte auch diesen Fehler.
Dieser Typ hat ein Patch-Skript erstellt, das diesen Fehler affenpatcht, aber es ist nur eine schnelle Lösung und wird nicht für den Produktionseinsatz empfohlen. Weitere Informationen zu dieser Änderung erhalten Sie im selben Thread.
@cromat , hast du es geschafft, das zu
Ich habe es gerade auf 5.11.0 gepinnt
Jawohl. Da wir das gleiche Fehlerprotokoll haben, haben Sie wahrscheinlich auch einen Import aus der tslint-Bibliothek. Durchsuchen Sie Ihren Code nach Importen von 'tslint/lib/utils'
und entfernen Sie ihn oder refaktorisieren Sie ihn. In meinem Fall war es die Funktion arrayify
, die das Problem verursachte und die eigentlich nicht benötigt wird, weil ich einfach Javasript verwenden konnte, um ein Array aus einigen Daten zu erstellen.
@cromat Super, dass du eine Lösung gefunden hast, danke! 🙌
Aber: Wie führt das Importieren von tslint/lib/utils
zu diesem Fehler? Hat utils.d.ts
eine Typenabhängigkeit von diesen Modulen, ist aber nicht explizit in der veröffentlichten dependencies
Liste in tslint/package.json
deklariert?
@JoshuaKGoldberg Ich bin mir nicht sicher, was das Problem verursacht. Ich habe versucht, die Build-Einstellungen zu ändern, weil ich dachte, dass Tslint möglicherweise nicht mit anderen Teilen der App erstellt und dann etwas daraus importiert wird, die App unterbricht, aber dies scheint nicht das Problem zu sein. Ich habe die Unterschiede zwischen den Tslint-Versionen 5.11.0 und 5.12.0 noch nicht untersucht, um herauszufinden, was die Breaking Changes sind.
Ich kann bestätigen, dass das Entfernen aller tslint/lib/utlis
Importe das Problem behoben hat.
@JoshuaKGoldberg Ich würde dies immer noch als Tslint-Fehler betrachten, da es in 5.11.0 gut funktioniert
Das gleiche Problem hat mich heute gebissen. Es stellte sich heraus, dass es tatsächlich einen Fehler gab
import { hasOwnProperty } from 'tslint/lib/utils';
in unserem Code. Code korrigiert, unnötigen Import entfernt, et voilà, Build läuft reibungslos.
Dies ist wirklich eine Teilmenge / ein Stück Kontextinformation für #2446. Es ist nicht gut dokumentiert _(Pull-Requests in den Dokumenten akzeptieren!)_, aber das Unterverzeichnis lib/
ist nicht Teil der öffentlichen API. Es ist nur ein Zufall, dass das in vielen Szenarien gut funktioniert.
@doronsever , normalerweise würde ich das Thema an dieser Stelle schließen, aber da es ein bisschen hin und her
Das Entfernen der Importe behebt dieses Problem.
Ich hatte das gleiche Problem, ich habe hasOwnProperty
von tslint/lib/utils
. Es wurde durch Object.prototype.hasOwnProperty
und erfolgreich auf 5.13 aktualisiert.
🤖 Beep boop! 👉 TSLint ist veraltet 👈 und Sie sollten zu typescript-eslint wechseln ! 🤖
🔒 Dieses Problem wird gesperrt, um weitere unnötige Diskussionen zu vermeiden. Dankeschön! 👋
Hilfreichster Kommentar
Ich hatte das gleiche Problem, ich habe
hasOwnProperty
vontslint/lib/utils
. Es wurde durchObject.prototype.hasOwnProperty
und erfolgreich auf 5.13 aktualisiert.