Protractor: TS2440:インポート宣言が「PluginConfig」のローカル宣言と競合しています。

作成日 2019年11月06日  ·  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
  • Angularバージョン: ^4.2.4
  • ブラウザ: any
  • オペレーティングシステムとバージョンWindows 10
  • 分度器構成ファイル

const {SpecReporter} = require( 'jasmine-spec-reporter');

exports.config = {
allScriptsTimeout:11000、
仕様:[
'./e2e/ * / .e2e-spec.ts'
]、
機能:{
'browserName': 'chrome'
}、
directConnect:true、
baseUrl: ' http:// localhost :4200 /'、
フレームワーク: 'ジャスミン'、
jasmineNodeOpts:{
showColors:true、
defaultTimeoutInterval:30000、
印刷:function(){}
}、
onPrepare(){
require( 'ts-node')。register({
プロジェクト: 'e2e / tsconfig.e2e.json'
});
jasmine.getEnv()。addReporter(new SpecReporter({spec:{displayStacktrace:true}}));
}
};

  • バグを再現する手順-npmrun buildfail

機能リクエスト
解決するのを手伝ってください

最も参考になるコメント

すべての人にとって最善の解決策ではないかもしれませんが、tsconfig.jsonに以下を追加することでこれを修正できるはずです。

"skipLibCheck": true

全てのコメント27件

今日の時点で、同じ問題が発生しています(Protractor5.4.2とAngular8で)

ここで分度器5.4.2とAngular8で同じ問題が発生します

Typescriptバージョンをアップグレードしているときに、今日これに遭遇しました。 私たちはAngularJSを使用しており、Protractor5.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-imported-type-declarations-now-conflict

修正してください。 ヌルの合体が必要です! :)

ここでも同じ問題があります。 私のプロジェクトは分度器5.4.2にあり、TypeScript3.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 @heathkit

#5325の複製

編集:私はAngularチームではなくTypescriptチームで働いていることを明確にする必要があります。 新しい5. *バージョンを公開しようとすると言ったチームメンバーと話をしましたが、プロセスは簡単ではないと思います。

今日、typescriptバージョンを3.7.xから3.6.xにダウングレードしました。正常に動作しています。 mattcaseyありがとう

@sandersnを明確にしていただきありがとうございます。 それが私の次の質問になるでしょう。 フロー制御に依存せず、6.0.0に更新しようとしましたが、公開されたパッケージでさえ、まだ修正されていないようです。 チームの誰かがここにコメントできれば素晴らしいと思います。私たちは数日、数か月、またはそれ以上話していますか?

編集:私は助けを申し出ますが、新しいバージョンをリリースする際のホールドアップは「ちょうど」のようです:)

編集2:システムの残りの部分がTS 3.7に移行したので、私にとって2つの悪のうちの小さい方は、tsconfigのカスタム.d.tsファイルにリンクすることによって分度器からのタイプをオーバーライドすることでした: https:// www.typescriptlang.org/docs/handbook/module-resolution.html#path -mapping

@mattcasey現在の修正がどのように機能するかをもう少し詳しく説明して

タイプ/ノードの依存関係を更新します
npm install -g @types/node@8

タイプ/ノードがdevDependenciesとdependenciesの両方にリストされていることを確認してください

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

typescript 3.7.2を使用するモジュールでこれが発生した場合は、「as」ステートメントを使用できます。

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

または、モジュールをデフォルトとしてエクスポートして、別の変数名を使用することもできます

今日、typescriptバージョンを3.7.xから3.6.xにダウングレードしました。正常に動作しています。 mattcaseyありがとう

それは「typescript」:「〜3.6」をファイルpackage.jsonに置き、ターミナルで「npminstall」を実行しました。 ありがとう!

同じ問題で、3.6.4にダウングレードすると機能しました。

ここで同じ問題が、私がしなければならなかったnpm uninstall -g typescriptのローカルバージョンようにtsc優先されます。 代わりにPATHをいじることができた…

@ woppa684私の修正は、基本的に、分度器用に独自の型を作成し、Node_modules内の型を無視するようにTypescriptに指示することです。 私の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"]
    }
  }
}

これにより、分度器メソッドがタイプセーフではなくなるという欠点を伴うTypescript3.7を使用できます。

私たちが使用した別の解決策は、 https://github.com/angular/protractor/pull/5326/の修正を使用して分度器の変更されたビルドを作成

分度器の代わりに一時的に使用します

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

AngularのDevOpsでこの問題が発生しています。 これはちょうど起こり始めました。 私は戻って、package.jsonとpackage-lock.jsonを、それが機能することを知ったときから取得しました。
Angularをアップグレードしました。 私はいくつかの異なるtypescriptバージョンを試しました。 ローカルコンピューターでは機能しますが、devopsでは機能しません。 失敗しているのはvsビルド部分だけです。 npm / ngのものは問題なく動作します。
すべてが私のシステムで完全に機能します。
https://developercommunity.visualstudio.com/content/problem/855096/npm-ng-suddenly-not-working-conflict-pluginconfig.html

typescript 3.7.2を使用するモジュールでこれが発生した場合は、「as」ステートメントを使用できます。

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

または、モジュールをデフォルトとしてエクスポートして、別の変数名を使用することもできます

@anicarrr 、提供された2番目の回答の例を教えてください。

すべての人にとって最善の解決策ではないかもしれませんが、tsconfig.jsonに以下を追加することでこれを修正できるはずです。

"skipLibCheck": true

typescript 3.7.2を使用するモジュールでこれが発生した場合は、「as」ステートメントを使用できます。
import { module as otherModuleName } from "./module"
または、モジュールをデフォルトとしてエクスポートして、別の変数名を使用することもできます

@anicarrr 、提供された2番目の回答の例を教えてください。

私は次のようにエクスポートすることを意味します:

export default myModule

したがって、インポートするときは、次のような任意の名前を使用できます。

import whateverName from myModule

これはhttps://github.com/angular/protractor/pull/5326で修正されました

fyi:それまでの間、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
  • Angularバージョン: ^4.2.4
  • ブラウザ: any
  • オペレーティングシステムとバージョンWindows 10
  • 分度器構成ファイル

const {SpecReporter} = require( 'jasmine-spec-reporter');

exports.config = {
allScriptsTimeout:11000、
仕様:[
'./e2e/ * / .e2e-spec.ts'
]、
機能:{
'browserName': 'chrome'
}、
directConnect:true、
baseUrl: ' http:// localhost :4200 /'、
フレームワーク: 'ジャスミン'、
jasmineNodeOpts:{
showColors:true、
defaultTimeoutInterval:30000、
印刷:function(){}
}、
onPrepare(){
require( 'ts-node')。register({
プロジェクト: 'e2e / tsconfig.e2e.json'
});
jasmine.getEnv()。addReporter(new SpecReporter({spec:{displayStacktrace:true}}));
}
};

  • バグを再現する手順-npmrun buildfail

機能リクエスト
解決するのを手伝ってください

こんにちはSachinBN、

プロジェクトにインストールされているTypescriptのバージョンを変更する必要があります。 バージョンを変更するには、VS Codeターミナルで以下のコマンドを使用します(引用符なし)。

"npm install -g [email protected] "

完了したら、以下のコマンドを使用して、VSCodeでプロジェクトのtypescriptのバージョンを確認してください

「tsc-v」

3.6.2と表示されます。 package.jsonファイルで同じバージョンを使用してください。 バージョンが3.6.2に変更されると、「tsc」を再度実行すると、エラーがなくなるはずです。

お役に立てれば。

よろしく、

あめや

私はAngularアプリでこの問題を抱えていましたが、提案によって自動的に追加される分度器のインポートステートメントを削除することで解決できます。

お気に入り:

'分度器'から{要素}をインポートします
'分度器'から{promise}をインポートします

それらを削除するだけで、期待どおりに実行されます。
私のコードは機能しました。あなたのコードも機能することを願っています。

よろしく、
ニシット・ジンズヴァディヤ

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コンパイラは、他の誰かの喫煙銃のエラーを非難することがあります。

今日、.spec.tsユニットテストファイルで作業しているときに、OPの正確なエラーメッセージが表示されました。 ユニットテストにProtractorは必要なかったので、一時的にnpm uninstall protractorでアンインストールしました

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

原因は、Visual StudioCodeが通常のimport { EventEmitter } from '@angular/core';代わりにこの自動インポートステートメントを不可解に作成したこと

まだ4.0.2でこれを手に入れました。うーん

私はAngularアプリでこの問題を抱えていましたが、提案によって自動的に追加される分度器のインポートステートメントを削除することで解決できます。

お気に入り:

'分度器'から{要素}をインポートします
'分度器'から{promise}をインポートします

それらを削除するだけで、期待どおりに実行されます。
私のコードは機能しました。あなたのコードも機能することを願っています。

よろしく、
ニシット・ジンズヴァディヤ

私にとっては、 @angular/coreではなくProtractorからEventEmitterをインポートしたのは、VSCodeの自動インポート@angular/core 。 これを修正すると、問題が修正されました。

このページは役に立ちましたか?
0 / 5 - 0 評価