При запуске сборки Angular после обновления до 5.12.0 мы получаем следующие ошибки и предупреждения
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'
Во время сборки нет ошибок
👋 @doronsever - извините, что это вас беспокоит. Это не то, что всплывало раньше, и в ваших сообщениях об ошибках недостаточно информации, чтобы уйти от них - вы можете разместить здесь ссылку на свой репозиторий, чтобы мы могли получить к ней доступ?
Что можно попробовать: удалите каталог node_modules
и либо package-lock.json
или yarn.lock
_ (в зависимости от того, что существует) _, затем переустановите с помощью npm i
/ yarn
и попробовать еще раз?
Похоже, что ваши определения типа @types/node
для Node не найдены TypeScript.
@JoshuaKGoldberg Я
Я не могу предоставить вам доступ к нашему репо, но если вам нужны другие журналы, дайте мне знать ...
Когда я перехожу на 5.11.0, все работает как положено
Некоторые уточняющие вопросы:
package.json
, package-lock.json
, yarn.lock
и tsconfig.json
, которые существуют и доступны? _ (пожалуйста, разместите их здесь, если таковые имеются) _@types/node
как devDependency в package.json
?@types/node
как devDependency{
"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 Я не могу ng new --minimal
. npm run build
и npm run lint
работают нормально.
// 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
То, что вы видите, похоже на проблему с пакетами npm link
ed. Если TypeScript не может разрешить @types/node
по некоторому пути в вашем каталоге node_modules
, я предполагаю, почему.
Закрытие этой проблемы как невоспроизводимой, поскольку похоже, что она на вашей стороне, но, пожалуйста, напишите мне на https://gitter.im/palantir/tslint, если это не поможет!
@JoshuaKGoldberg снова, когда я перехожу на 5.11.0, все работает нормально ...
@doronsever да, это
Изменить: для большей ясности для будущих людей, читающих это, средство отслеживания проблем обычно предназначено только для проблем (ошибки, запросы функций, улучшения документации и т. Д.) В TSLint. 5.12.0 структурно почти идентичен 5.11.0, и другие проекты Angular отлично работают с ним, поэтому маловероятно, что это проблема самого TSLint. Gitter и StackOverflow рекомендуются для других запросов, таких как этот загадочный вид поломки. Если вы тоже это видите _ (или у вас есть указание на то, что я здесь ужасно неправ) _, напишите сообщение, и эту проблему можно будет открыть повторно!
Я не уверен, что это не ошибка tslint. У меня такая же проблема, версия 5.12.0 выдает идентичные ошибки, а 5.11.0 работает нормально.
Я пробовал с угловыми версиями 7.12 и 7.1.4, и оба не работают с 5.12.0
Тот же запрос @cromat - вы можете опубликовать способ воспроизвести это локально?
Поскольку мне не удалось воспроизвести ошибку в новом проекте angular (я попытался скопировать исходный файл package.json, angular.json, tslint.json), я обнаружил, что ошибка на самом деле возникает из кода приложения. Некоторое время я копался в коде и обнаружил, что проект не будет построен из-за функции arrayify
.
Эта функция импортируется из 'tslint/lib/utils'
поэтому я предполагаю, что некоторые другие функции, импортированные отсюда, также могут вызвать эту проблему.
Если это все еще не устранило проблему для кого-то, эта ошибка возникает при объединении файлов для приложения, и в последнее время конфигурация узла была изменена внутри веб-пакета из:
node: {
global: 'window',
crypto: 'empty',
module: false,
clearImmediate: false,
setImmediate: false
}
к
node: false
и это изменение также вызывало эту ошибку.
Этот парень сделал патч-скрипт, который обезьяны исправляет эту ошибку, но это просто быстрое исправление и не рекомендуется для использования в производственной среде. Вы также можете получить дополнительную информацию об этом изменении в той же теме.
@cromat, так тебе удалось это исправить?
Просто приколол к 5.11.0
да. Поскольку у нас такой же журнал ошибок, вероятно, у вас также есть импорт из библиотеки tslint. Найдите в вашем коде любой импорт из 'tslint/lib/utils'
и удалите его или выполните рефакторинг. В моем случае это была функция arrayify
которая вызвала проблему, и это на самом деле не нужно, потому что я мог просто использовать простой javasript для создания массива некоторых данных.
@cromat Замечательно, что вы нашли исправление, спасибо! 🙌
Но: как импорт из tslint/lib/utils
приводит к этой ошибке? Дело в том, что utils.d.ts
имеет зависимость типов от этих модулей, но явно не объявлен в опубликованном списке dependencies
в tslint/package.json
?
@JoshuaKGoldberg Я не уверен, в чем проблема. Я попытался изменить настройки сборки, потому что подумал, что, возможно, tslint не работает с другими частями приложения, а затем импорт чего-то из него нарушает работу приложения, но, похоже, это не проблема. Я еще не исследовал различия между версиями tslint 5.11.0 и 5.12.0, чтобы выяснить, в чем заключаются критические изменения.
Я могу подтвердить, что удаление всего импорта tslint/lib/utlis
устранило проблему.
@JoshuaKGoldberg Я бы все равно считал это ошибкой tslint, так как она отлично работает в 5.11.0
Та же проблема укусила меня сегодня. Оказалось, что действительно был ошибочный
import { hasOwnProperty } from 'tslint/lib/utils';
в нашем коде. Исправлен код, удален ненужный импорт, и вуаля, сборка работает без сбоев.
Это действительно подмножество / часть контекстной информации для # 2446. Это плохо документировано _ (прием запросов на включение в документацию!) _, Но подкаталог lib/
не является частью общедоступного API. Это просто совпадение, что это хорошо работает во многих сценариях.
@doronsever , я обычно закрываю проблему на этом этапе, но, поскольку это было немного назад и вперед - какие-либо мысли?
Удаление импорта устраняет эту проблему.
У меня была такая же проблема, я использовал hasOwnProperty
от tslint/lib/utils
. Заменил его на Object.prototype.hasOwnProperty
и успешно обновился до 5.13.
🤖 Бип-буп! 👉 TSLint устарел 👈 и вам следует перейти на typescript-eslint ! 🤖
🔒 Этот вопрос заблокирован, чтобы предотвратить дальнейшее ненужное обсуждение. Спасибо! 👋
Самый полезный комментарий
У меня была такая же проблема, я использовал
hasOwnProperty
отtslint/lib/utils
. Заменил его наObject.prototype.hasOwnProperty
и успешно обновился до 5.13.