你好,先生!
错误报告
我收到以下错误:
[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 } = require('jasmine-spec-reporter');
出口.config = {
allScriptsTimeout: 11000,
眼镜: [
'./e2e/ */ .e2e-spec.ts'
],
能力:{
'浏览器名称':'铬'
},
直接连接:真,
baseUrl: ' http://localhost :4200/',
框架:“茉莉花”,
茉莉花节点选项:{
显示颜色:真实,
默认超时间隔:30000,
打印:函数(){}
},
准备(){
require('ts-node').register({
项目:'e2e/tsconfig.e2e.json'
});
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
}
};
功能要求
请帮我解决
截至今天,我遇到了同样的问题(使用 Protractor 5.4.2 和 Angular 8)
Protractor 5.4.2 和 Angular 8 也有同样的问题
我今天在升级我们的 Typescript 版本时遇到了这个问题。 我们在 AngularJS 上,它发生在 Protractor 5.4.1 和 5.4.2 上。 我在 Typescript 3.6.4 (3.6.x) 上没有收到错误消息,但我在 Typescript 3.7.2 (3.7.x) 上收到了错误消息。 我相信这与这个重大变化有关: https :
请修复; 我们需要无效合并! :)
同样的问题在这里。 我的项目是 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 )
抄送: @sandersn @heathkit
重复 #5325
编辑:我应该澄清一下,我在 Typescript 团队工作,而不是在 Angular 团队工作。 我和一些团队成员交谈过,他们说他们会尝试发布一个新的 5.* 版本,但我相信这个过程并不简单。
今天我已经将打字稿版本从 3.7.x 降级到 3.6.x.,它工作正常。 谢谢马特凯西
感谢您澄清@sandersn; 那将是我的下一个问题。 我们不依赖流量控制,我尝试更新到 6.0.0,但即使是已发布的软件包似乎也没有您的修复程序。 如果团队中的某个人可以在这里发表评论,那就太好了:我们是在谈论几天、几个月还是更长时间?
编辑:我愿意提供帮助,但似乎在发布新版本时“只是”受阻:)
编辑 2:由于我们系统的其余部分已转移到 TS 3.7,对我来说,两害相权取其轻的是通过链接到我们的 tsconfig 中的自定义 .d.ts 文件来覆盖量角器中的类型: 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",
...
}
如果使用 typescript 3.7.2 的任何模块发生这种情况,您可以使用“as”语句。
import { module as otherModuleName } from "./module"
或者您可以将模块导出为默认值,以便您可以使用不同的变量名称
今天我已经将打字稿版本从 3.7.x 降级到 3.6.x.,它工作正常。 谢谢马特凯西
它把 "typescript": "~3.6" 放到 package.json 文件中,然后在终端上运行 "npm install",它对我有用。 谢谢!
同样的问题,当我降级到 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"
我在使用 Angular 的 devops 上遇到了这个问题。 这才刚刚开始发生。 我回去拿了一个 package.json 和 package-lock.json 从我知道它起作用的时候开始。
我升级了 Angular。 我尝试了几种不同的打字稿版本。 它适用于我的本地计算机,但不适用于 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 ,您能否为您提供的第二个答案提供一个示例?
可能不是每个人的最佳解决方案,但您应该能够通过在 tsconfig.json 中添加以下内容来解决此问题:
"skipLibCheck": true
如果使用 typescript 3.7.2 的任何模块发生这种情况,您可以使用“as”语句。
import { module as otherModuleName } from "./module"
或者您可以将模块导出为默认值,以便您可以使用不同的变量名称@anicarrr ,您能否为您提供的第二个答案提供一个示例?
我的意思是像这样导出:
export default myModule
因此,当您导入它时,您可以使用任何您想要的名称,例如:
import whateverName from myModule
仅供参考:同时使用 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 } = require('jasmine-spec-reporter');
出口.config = {
allScriptsTimeout: 11000,
眼镜: [
'./e2e/ */ .e2e-spec.ts'
],
能力:{
'浏览器名称':'铬'
},
直接连接:真,
baseUrl: ' http://localhost :4200/',
框架:“茉莉花”,
茉莉花节点选项:{
显示颜色:真实,
默认超时间隔:30000,
打印:函数(){}
},
准备(){
require('ts-node').register({
项目:'e2e/tsconfig.e2e.json'
});
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
}
};
- 重现错误的步骤 - npm run build 失败
功能要求
请帮我解决
嗨,SachinBN,
您需要更改项目中安装的 Typescript 版本。 在 VS Code 终端中使用以下命令来更改版本(不带引号)。
“npm install -g [email protected] ”
完成后,请使用以下命令在 VS Code 上检查项目中的打字稿版本
“tsc -v”
它应该显示 3.6.2。 请在 package.json 文件中使用相同的版本。 一旦版本更改为 3.6.2 再次执行“tsc”,错误应该消失了。
希望这可以帮助。
问候,
阿美亚
我在我的 angular 应用程序中遇到了这个问题,我能够通过删除由建议自动添加的量角器导入语句来解决它。
喜欢:
从“量角器”导入{元素}
从“量角器”导入{承诺}
只需删除它们,我就会按预期运行。
我的工作,我希望你的代码工作。
问候,
尼希特·津祖瓦迪亚
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
卸载了它,然后导致 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 中仍然得到了这个 .. 嗯
我在我的 angular 应用程序中遇到了这个问题,我能够通过删除由建议自动添加的量角器导入语句来解决它。
喜欢:
从“量角器”导入{元素}
从“量角器”导入{承诺}只需删除它们,我就会按预期运行。
我的工作,我希望你的代码工作。问候,
尼希特·津祖瓦迪亚
对我来说,这是 VSCode 的自动导入,它从Protractor
而不是@angular/core
导入了EventEmitter
@angular/core
。 解决这个问题为我解决了这个问题。
最有用的评论
可能不是每个人的最佳解决方案,但您应该能够通过在 tsconfig.json 中添加以下内容来解决此问题: