Protractor: TS2440: بيان الاستيراد يتعارض مع الإعلان المحلي لـ 'PluginConfig'.

تم إنشاؤها على ٦ نوفمبر ٢٠١٩  ·  27تعليقات  ·  مصدر: angular/protractor

مرحبا سيدي!

تقرير الشوائب
أتلقى الخطأ التالي أدناه:

خطأ في [at-loader] ./node_modules/protractor/built/index.d.ts:5:10
TS2440: بيان الاستيراد يتعارض مع الإعلان المحلي لـ 'PluginConfig'.

خطأ في [at-loader] ./node_modules/protractor/built/index.d.ts:5:24
TS2440: بيان الاستيراد يتعارض مع الإعلان المحلي لـ 'ProtractorPlugin'.

  • إصدار العقدة: 10.5.0
  • إصدار المنقلة: ~5.1.2
  • الإصدار الزاوي: ^4.2.4
  • المتصفح (المستعرضات): any
  • نظام التشغيل والإصدار Windows 10
  • ملف تكوين المنقلة

const {SpecReporter} = تتطلب ('jasmine-spec-reporter') ؛

الصادرات.config = {
المهلة: 11000 ،
المواصفات: [
"./e2e/ * / .e2e-spec.ts"
] ،
قدرات: {
"اسم المتصفح": "كروم"
} ،
DirectConnect: صحيح ،
baseUrl: " http: // localhost : 4200 /" ،
الإطار: الياسمين ،
jasmineNodeOpts: {
showColors: صحيح ،
الافتراضي مهلة الفاصل الزمني: 30000 ،
طباعة: وظيفة () {}
} ،
عند التحضير () {
تتطلب ('ts-node'). تسجيل ({
المشروع: "e2e / tsconfig.e2e.json"
}) ؛
jasmine.getEnv (). addReporter (new SpecReporter ({spec: {displayStacktrace: true}})) ؛
}
} ؛

  • خطوات إعادة إنتاج الخطأ - تفشل عملية إنشاء تشغيل npm

طلب المواصفات
الرجاء مساعدتي في الحل

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

قد لا يكون الحل الأفضل للجميع ، ولكن يجب أن تكون قادرًا على إصلاح ذلك عن طريق إضافة ما يلي في tsconfig.json:

"skipLibCheck": true

ال 27 كومينتر

اعتبارًا من اليوم ، أواجه نفس المشكلة (مع Protractor 5.4.2 و Angular 8)

نفس المشكلة هنا مع Protractor 5.4.2 و Angular 8

واجهت هذا اليوم أثناء ترقية إصدار Typescript الخاص بنا. نحن على AngularJS ويحدث لكلا المنقلة 5.4.1 و 5.4.2. لا أحصل على الخطأ في Typescript 3.6.4 (3.6.x) ، لكني أحصل على Typescript 3.7.2 (3.7.x). أعتقد أن الأمر مرتبط بهذا التغيير المفاجئ: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#local -and-import-type-signatureations-now-conf

ارجو الاصلاح؛ نحن بحاجة إلى اندماج عديم! :)

نفس المشكلة هنا. مشروعي في Protractor 5.4.2 ونود الانتقال إلى TypeScript 3.7.

سيكون من الرائع دعم الإصلاح (إنه يعمل بالتأكيد):
89fbf75d4103db2cd20fd0c1c4ca7efebc52c049
37bef24331c1012bfc2cc7d3fa259a00e69bd192
من الماجستير إلى 5.4.2

5.4.2 هو أحدث إصدار متاح على موقع npmjs.com.
6.0.0 تحتوي على تغييرات عاجلة ، لذا فهي ليست جيدة لمشروعي.
(https://github.com/angular/protractor/blob/6.0.0/CHANGELOG.md)

CC: sandersn @ هيثكيت

نسخة مكررة من # 5325

تحرير: يجب أن أوضح أنني أعمل في فريق Typescript ، وليس فريق Angular. لقد تحدثت إلى بعض أعضاء الفريق الذين قالوا إنهم سيحاولون نشر إصدار 5. * جديد ، لكنني أعتقد أن العملية ليست بسيطة.

لقد قمت اليوم بتخفيض الإصدار المطبوع من الإصدار المطبوع من 3.7.x إلى 3.6.x. ، وهو يعمل بشكل جيد. شكرا ماتكاسي

شكرا للتوضيح sandersn ؛ هذا كان سيكون سؤالي التالي. نحن لا نعتمد على التحكم في التدفق وحاولت التحديث إلى 6.0.0 ولكن حتى تلك الحزمة المنشورة لا يبدو أنها تم إصلاحها بعد. سيكون من الرائع أن يعلق أحد أعضاء الفريق هنا: هل نتحدث بضعة أيام أم بضعة أشهر أم أكثر؟

تحرير: أعرض المساعدة ولكن يبدو أن التعطيل "فقط" في إصدار إصدار جديد :)

تحرير 2: نظرًا لأن باقي نظامنا قد انتقل إلى TS 3.7 ، فإن أهون شررين بالنسبة لي هو تجاوز الأنواع من المنقلة في الوقت الحالي عن طريق الارتباط بملف d.ts مخصص في tsconfig: https: // www.typescriptlang.org/docs/handbook/module-resolution.html#path -mapping

mattcasey هل يمكنك وصف كيفية عمل الإصلاح الحالي بمزيد من التفصيل؟ فقط ملف index.d.ts منسوخ بمسارات التصدير الصحيحة ثم استخدام تعيين المسار لتعيين المنقلة إلى الملف الجديد؟

أنواع التحديث / تبعية العقدة
npm install -g @types/node@8

تأكد من إدراج الأنواع / العقدة في كل من devDependencies وتبعيات

"dependencies": { ... "@types/node": "^8.10.59", ... }, "devDependencies": { ... "@types/node": "^8.10.59", ... }

في حالة حدوث ذلك مع أي وحدة نمطية تستخدم الإصدار 3.7.2 ، يمكنك استخدام عبارة "as".

import { module as otherModuleName } from "./module"

أو يمكنك تصدير الوحدة كإعداد افتراضي حتى تتمكن من استخدام اسم متغير مختلف

لقد قمت اليوم بتخفيض الإصدار المطبوع من الإصدار المطبوع من 3.7.x إلى 3.6.x. ، وهو يعمل بشكل جيد. شكرا ماتكاسي

وضع "typecript": "~ 3.6" لملف package.json ثم تشغيل "تثبيت npm" على المحطة وقد نجح الأمر بالنسبة لي. شكرا!

نفس المشكلة وعندما خفضت التصنيف إلى 3.6.4 عملت.

نفس المشكلة هنا ، اضطررت إلى npm uninstall -g typescript حتى تكون الأولوية للإصدار المحلي من tsc . كان بإمكاني العبث بـ PATH بدلاً من ذلك ...

@ woppa684 إصلاحي هو في الأساس إنشاء الأنواع الخاصة بي لـ Protractor وإخبار Typescript بتجاهل تلك الموجودة داخل node_modules. يبدو ملف protractor.d.ts (الموجود في مشروعي في test-e2e/protractor.d.ts ) كما يلي:

// Note: This stub exists to override Protractor types which are incompatible with TS 3.7 as of 5.4.2 and 6.0.0
declare module 'protractor' {
    let browser: any;
    let element: any;
    let by: any;
    let ExpectedConditions: any;
    let until: any;
    let Key: any;
}

ثم في tsconfig:

{
  ...
  "compilerOptions": {
    ...
    "paths": {
      "protractor": ["test-e2e/protractor.d.ts"]
    }
  }
}

هذا يسمح لي باستخدام Typescript 3.7 مع الجانب السلبي أن أساليب المنقلة لم تعد آمنة ضد الكتابة.

الحل البديل الذي استخدمناه هو إنشاء بنية معدلة لمنقلة مع الإصلاحات في https://github.com/angular/protractor/pull/5326/

نحن لا نستخدمها مؤقتًا بدلاً من المنقلة

// package.json
"protractor": "tomyam1/protractor-ts3.7-fix"

أواجه هذه المشكلة على devops مع Angular. هذا بدأ للتو. عدت وحصلت على package.json و package-lock.json من وقت أعرف أنها تعمل.
لقد قمت بترقية Angular. لقد جربت عدة إصدارات مختلفة من الحروف المطبوعة. إنه يعمل على جهاز الكمبيوتر المحلي الخاص بي ، ولكن ليس على أجهزة Devops. إنه فقط الجزء مقابل البناء هو الذي فشل. تعمل الأشياء npm / ng على ما يرام.
كل شيء يعمل بشكل كامل على نظامي.
https://developercommunity.visualstudio.com/content/problem/855096/npm-ng-suddenly-not-working-conflict-pluginconfig.html

في حالة حدوث ذلك مع أي وحدة نمطية تستخدم الإصدار 3.7.2 ، يمكنك استخدام عبارة "as".

import { module as otherModuleName } from "./module"

أو يمكنك تصدير الوحدة كإعداد افتراضي حتى تتمكن من استخدام اسم متغير مختلف

anicarrr ، هل يمكنك من فضلك إعطاء مثال للإجابة الثانية التي قدمتها؟

قد لا يكون الحل الأفضل للجميع ، ولكن يجب أن تكون قادرًا على إصلاح ذلك عن طريق إضافة ما يلي في tsconfig.json:

"skipLibCheck": true

في حالة حدوث ذلك مع أي وحدة نمطية تستخدم الإصدار 3.7.2 ، يمكنك استخدام عبارة "as".
import { module as otherModuleName } from "./module"
أو يمكنك تصدير الوحدة كإعداد افتراضي حتى تتمكن من استخدام اسم متغير مختلف

anicarrr ، هل يمكنك من فضلك إعطاء مثال للإجابة الثانية التي قدمتها؟

أعني تصدير مثل:

export default myModule

لذلك عند استيراده ، يمكنك فقط استخدام أي اسم تريده ، مثل:

import whateverName from myModule

تم إصلاح هذا في https://github.com/angular/protractor/pull/5326. نحن نعمل على إصدار تصحيح.

لمعلوماتك: في هذه الأثناء ، يجب أن يكون استخدام خيار برنامج التحويل البرمجي tsc "skipLibCheck": true حلاً كافياً لأولئك المتأثرين بهذه المشكلة.

مرحبا سيدي!

تقرير الشوائب
أتلقى الخطأ التالي أدناه:

خطأ في [at-loader] ./node_modules/protractor/built/index.d.ts:5:10
TS2440: بيان الاستيراد يتعارض مع الإعلان المحلي لـ 'PluginConfig'.

خطأ في [at-loader] ./node_modules/protractor/built/index.d.ts:5:24
TS2440: بيان الاستيراد يتعارض مع الإعلان المحلي لـ 'ProtractorPlugin'.

  • إصدار العقدة: 10.5.0
  • إصدار المنقلة: ~5.1.2
  • الإصدار الزاوي: ^4.2.4
  • المتصفح (المستعرضات): any
  • نظام التشغيل والإصدار Windows 10
  • ملف تكوين المنقلة

const {SpecReporter} = تتطلب ('jasmine-spec-reporter') ؛

الصادرات.config = {
المهلة: 11000 ،
المواصفات: [
"./e2e/ * / .e2e-spec.ts"
] ،
قدرات: {
"اسم المتصفح": "كروم"
} ،
DirectConnect: صحيح ،
baseUrl: " http: // localhost : 4200 /" ،
الإطار: الياسمين ،
jasmineNodeOpts: {
showColors: صحيح ،
الافتراضي مهلة الفاصل الزمني: 30000 ،
طباعة: وظيفة () {}
} ،
عند التحضير () {
تتطلب ('ts-node'). تسجيل ({
المشروع: "e2e / tsconfig.e2e.json"
}) ؛
jasmine.getEnv (). addReporter (new SpecReporter ({spec: {displayStacktrace: true}})) ؛
}
} ؛

  • خطوات إعادة إنتاج الخطأ - تفشل عملية إنشاء تشغيل npm

طلب المواصفات
الرجاء مساعدتي في الحل

مرحبًا SachinBN ،

تحتاج إلى تغيير إصدار Typescript المثبت في المشروع. استخدم الأمر أدناه في VS Code Terminal لتغيير الإصدار (بدون علامات اقتباس).

"npm install -g [email protected] "

بمجرد الانتهاء ، يرجى التحقق من نسخة مطبوعة في مشروعك على رمز VS ، باستخدام الأمر أدناه

"tsc -v"

يجب أن تظهر 3.6.2. الرجاء استخدام نفس الإصدار في ملف package.json. بمجرد تغيير الإصدار إلى 3.6.2 ، قم بتنفيذ "tsc" مرة أخرى ، يجب أن يختفي الخطأ.

أتمنى أن يساعدك هذا.

يعتبر،

أميا

واجهت هذه المشكلة في تطبيقي الزاوي ويمكنني حلها عن طريق إزالة بيان استيراد المنقلة الذي تمت إضافته تلقائيًا بواسطة الاقتراحات.

يحب:

استيراد {element} من "منقلة"
استيراد {وعد} من "منقلة"

فقط قم بإزالتها وسأعمل كما هو متوقع.
لقد عملت ، أتمنى أن يعمل كودك أيضًا.

يعتبر،
نيشيت زينزوفاديا

npx tsc -v
Version 3.8.3

أحدث عقدة و NPM.

ملفي

import * as mysql from "mysql2";

const config =
    process.env.NODE_ENV == "prod"
        ? {
            connectionLimit: 10,
            host: "*********.rds.amazonaws.com",
            user: "admin",
            database: "p_" + process.env.PROJECT_ID,
            password: "*********",
            prefix: `p_${process.env.PROJECT_ID}_`
        }
        : {
            connectionLimit: 10,
            host: "host.docker.internal",
            user: "root",
            database: "i**_project",
            password: "root",
            prefix: ""
        };


export const db = mysql.createPool(config);
export const prefix = config.prefix;

ولدي نفس الخطأ

npm run start

> [email protected] start /workspaces/icod-prt
> npx tsc && node build/index.js

typings/modules/mysql2/index.d.ts:677:1 - error TS2440: Import declaration conflicts with local declaration of 'Connection'.

677 import Connection = require('~mysql2~mysql/lib/Connection');
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

typings/modules/mysql2/index.d.ts:679:1 - error TS2440: Import declaration conflicts with local declaration of 'PoolConnection'.

679 import PoolConnection = require('~mysql2~mysql/lib/PoolConnection');
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

typings/modules/mysql2/index.d.ts:680:1 - error TS2440: Import declaration conflicts with local declaration of 'Pool'.

680 import Pool = require('~mysql2~mysql/lib/Pool');
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

typings/modules/mysql2/index.d.ts:682:1 - error TS2440: Import declaration conflicts with local declaration of 'PoolCluster'.

682 import PoolCluster = require('~mysql2~mysql/lib/PoolCluster');
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

typings/modules/mysql2/index.d.ts:684:1 - error TS2440: Import declaration conflicts with local declaration of 'Query'.

684 import Query = require('~mysql2~mysql/lib/protocol/sequences/Query');

في بعض الأحيان ، يلقي مترجم TypeScript باللوم على أخطاء شخص آخر.

تلقيت رسالة خطأ OP بالضبط اليوم أثناء العمل على ملفات اختبار وحدة spec.ts. نظرًا لأنني لم أكن بحاجة إلى Protractor لاختبارات الوحدة ، فقد قمت بإلغاء تثبيته مؤقتًا باستخدام npm uninstall protractor مما تسبب بعد ذلك في قيام TypeScript بإلقاء الخطأ الحقيقي:

ERROR in src/app/.../...spec.ts:12:30 - error TS2307: Cannot find module 'protractor'.
12 import { EventEmitter } from 'protractor';

السبب هو أن Visual Studio Code أنشأ لسبب غير مفهوم بيان الاستيراد التلقائي هذا بدلاً من البيان العادي ، import { EventEmitter } from '@angular/core';

لا يزال يحصل على هذا في 4.0.2 .. هممم

واجهت هذه المشكلة في تطبيقي الزاوي ويمكنني حلها عن طريق إزالة بيان استيراد المنقلة الذي تمت إضافته تلقائيًا بواسطة الاقتراحات.

يحب:

استيراد {element} من "منقلة"
استيراد {وعد} من "منقلة"

فقط قم بإزالتها وسأعمل كما هو متوقع.
لقد عملت ، أتمنى أن يعمل كودك أيضًا.

يعتبر،
نيشيت زينزوفاديا

بالنسبة لي ، كان الاستيراد التلقائي لـ VSCode ، هو الذي استورد EventEmitter من Protractor بدلاً من @angular/core . إصلاح هذا حل المشكلة بالنسبة لي.

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