Tslint: الترقية إلى 5.12.0 تكسر عملية البناء الزاوي

تم إنشاؤها على ٢٥ ديسمبر ٢٠١٨  ·  20تعليقات  ·  مصدر: palantir/tslint

تقرير الشوائب

  • __ إصدار TSLint__: 5.12.0
  • __نسخة TypeScript__: 3.1.6
  • __ تشغيل TSLint عبر__: (اختر واحدًا) CLI / Node.js API / VSCode / grunt-tslint / Atom / Visual Studio / إلخ: Angular CLI

السلوك الفعلي

عند تشغيل Angular build بعد الترقية إلى 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'

سلوك متوقع

لا توجد أخطاء أثناء الإنشاء

External Question

التعليق الأكثر فائدة

واجهت نفس المشكلة ، كنت أستخدم hasOwnProperty من tslint/lib/utils . تم استبداله بـ Object.prototype.hasOwnProperty وتم ترقيته بنجاح إلى 5.13.

ال 20 كومينتر

👋 doronsever - آسف لسماع أن هذا

شيء ما يجب تجربته: حذف دليل node_modules وإما package-lock.json أو yarn.lock _ (أيهما موجود) _ ، ثم أعد التثبيت باستخدام npm i / yarn وحاول مرة أخرى؟

يبدو أن تعريفات نوع @types/node الخاصة بك للعقدة لم يتم العثور عليها بواسطة TypeScript.

JoshuaKGoldberg لقد قمت بالترقية إلى أحدث الأنواع / وحدة العقدة (10.12.18) وما زلت أتلقى نفس الأخطاء.

لا يمكنني منحك حق الوصول إلى الريبو الخاص بنا ولكن إذا كنت بحاجة إلى أي سجلات أخرى ، فيرجى إخبارنا ...
عندما أعود إلى الإصدار 5.11.0 ، يعمل كل شيء كما هو متوقع

بعض الأسئلة التوضيحية:

  • هل تستخدم npm أو الغزل؟
  • من package.json ، package-lock.json ، yarn.lock ، و tsconfig.json ، هل هي موجودة ومتاحة؟ _ (يرجى إرسالها هنا إن وجدت) _
  • هل حاولت صراحة إضافة @types/node باعتباره تبعية للتطوير في package.json ؟
  • أنا أستخدم npm
  • لقد أضفت @types/node كإعتمادية مطورة بشكل صريح
    ها هي الحزمة package.json:
{
  "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

ما تراه يبدو وكأنه مشكلة في حزم ed npm link . إذا لم يتمكن TypeScript من حل @types/node من مسار ما داخل دليلك node_modules ، فأنا أعتقد أن هذا هو السبب.

إغلاق هذه المشكلة باعتبارها غير قابلة للتكرار نظرًا لأنها تبدو وكأنها في نهايتك ، ولكن يرجى إجراء اختبار ping لي على https://gitter.im/palantir/tslint إذا لم يساعد ذلك!

JoshuaKGoldberg مرة أخرى ، عندما رجعت إلى الإصدار 5.11.0 ، كل شيء يعمل بشكل جيد ...

@ doronsever نعم ، إنه مخيف. ربما تكون مشكلة في الارتباط ، ربما مع حل الإصدار الذي تم طرحه هناك؟ ربما نوع آخر من الاختلاف الغريب في إصدار التبعية؟ بدون مزيد من المعلومات ، لن يكون من الممكن حقًا المساعدة. Gitter هو وسيط دردشة أفضل لهذا النوع من الدعم.

تحرير: لكي تكون أكثر وضوحًا للأشخاص الذين يقرؤون هذا في المستقبل ، فإن أداة تعقب المشكلات تكون عادةً مخصصة للمشكلات (الأخطاء وطلبات الميزات وتحسينات الوثائق وما شابه ذلك) في 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 - هل يمكنك نشر طريقة لإعادة إنتاج هذا محليًا؟

نظرًا لأنني لم أتمكن من إعادة إنتاج الخطأ داخل مشروع زاوية جديد (لقد حاولت نسخ ملف 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 التي تسببت في حدوث مشكلة وهذا في الواقع ليس ضروريًا لأنني يمكنني فقط استخدام جافا سكريبت عادي لإنشاء مصفوفة من بعض البيانات.

cromat رائع أنك وجدت إصلاحًا ، شكرًا! 🙌

لكن: كيف يؤدي الاستيراد من tslint/lib/utils إلى هذا الخطأ؟ هل هو أن utils.d.ts له نوع من التبعية على تلك الوحدات ، ولكن لم يتم الإعلان عنه صراحة في القائمة dependencies المنشورة في tslint/package.json ؟

JoshuaKGoldberg لست متأكدًا من سبب المشكلة. لقد حاولت تغيير إعدادات الإنشاء لأنني اعتقدت أنه ربما لا يتم إنشاء tslint باستخدام أجزاء أخرى من التطبيق ، ثم يؤدي استيراد شيء منه إلى تعطيل التطبيق ولكن يبدو أن هذه ليست المشكلة. لم أحقق بعد في الاختلافات بين الإصدارين 5.11.0 و 5.12.0 من tslint لاكتشاف التغييرات الفاصلة.

يمكنني أن أؤكد أن إزالة جميع الواردات tslint/lib/utlis أصلحت المشكلة.
JoshuaKGoldberg ما زلت أعتبر هذا خطأ tslint لأنه يعمل بشكل جيد في 5.11.0

نفس المشكلة عضتني اليوم. اتضح أنه كان هناك بالفعل خطأ

import { hasOwnProperty } from 'tslint/lib/utils';

في كودنا. تم إصلاح الكود ، وإزالة الاستيراد غير الضروري ، وما إلى ذلك ، يعمل البناء بسلاسة.

هذه حقًا مجموعة فرعية / جزء من المعلومات السياقية لـ # 2446. لم يتم توثيقه جيدًا _ (قبول طلبات السحب من المستندات!) _ ولكن الدليل الفرعي lib/ ليس جزءًا من واجهة برمجة التطبيقات العامة. إنها مجرد مصادفة أن هذا يحدث بشكل جيد في العديد من السيناريوهات.

@ doronsever ، عادةً ما أقوم بإغلاق المشكلة في هذه المرحلة ، ولكن نظرًا لأنه تم إرجاعها قليلاً - هل

تؤدي إزالة الواردات إلى إصلاح هذه المشكلة.

واجهت نفس المشكلة ، كنت أستخدم hasOwnProperty من tslint/lib/utils . تم استبداله بـ Object.prototype.hasOwnProperty وتم ترقيته بنجاح إلى 5.13.

🤖 بيب بوب! 👉 تم إهمال TSLint 👈 ويجب عليك التبديل إلى print-eslint ! 🤖

🔒 تم إقفال هذه المشكلة لمنع المزيد من المناقشات غير الضرورية. شكرا لك! 👋

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات