2016-10-25 23 views
3

我正在升级使用Typtro 2.0与量角器4.0.5。我正在从typcript 1.8和量角器3.8升级一个项目。我来翻过了一堆的问题,我在这里分享:量角器与Typescript 2.0.0重复标识问题

我的package.json是:

{ 
"dependencies": { 
"core-js": "2.2.2", 
"rxjs": "5.0.0-beta.6", 
"web-request": "^1.0.3", 
"zone.js": "0.6.12" 
}, 
"devDependencies": { 
"@types/jasmine": "^2.5.35", 
"@types/node": "^6.0.45", 
"@types/protractor": "^1.5.20", 
"@types/selenium-webdriver": "^2.53.33", 
"es6-promise": "3.1.2", 
"es6-promise-loader": "1.0.1", 
"es6-shim": "0.35.0", 
"es7-reflect-metadata": "1.6.0", 
"exports-loader": "0.6.3", 
"imports-loader": "0.6.5", 
"jasmine-reporters": "^2.2.0", 
"json-loader": "0.5.4", 
"mkdirp": "^0.5.1", 
"phantomjs-polyfill": "0.0.2", 
"phantomjs-prebuilt": "2.1.7", 
"pix-diff": "^1.0.14", 
"protractor": "4.0.5", 
"protractor-jasmine2-html-reporter": "0.0.6", 
"protractor-jasmine2-screenshot-reporter": "^0.3.2", 
"raw-loader": "0.5.1", 
"rimraf": "2.5.2", 
"ts-helpers": "1.1.1", 
"ts-node": "0.7.1", 
"tslint": "3.7.4", 
"tslint-loader": "2.1.3", 
"typedoc": "0.4.3", 
"typescript": "^2.0.0-beta", 
"underscore": "^1.8.3" 
} 

然后我的包JSON是:

"compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "sourceMap": true, 
    "noEmitHelpers": true, 
    "lib": ["es6", "dom"], 
    "types":[ 
    ] 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings" 
    ], 
    "filesGlob": [ 
    "./src/**/*.ts", 
    "!./node_modules/**/*.ts" 
    ], 
    "awesomeTypescriptLoaderOptions": { 
    "resolveGlobs": true, 
    "forkChecker": true, 
    "compiler": "node_modules/typescript" 
    }, 
    "compileOnSave": false, 
    "buildOnSave": false, 
    "atom": { "rewriteTsconfig": false } 
} 

当我尝试运行量角器使用该设置进行测试,我得到一堆这样的错误:

node_modules\@types\selenium-webdriver\index.d.ts (12,11): Duplicate identifier 'Driver'. (2300) 
node_modules\@types\selenium-webdriver\index.d.ts (46,11): Duplicate identifier 'Options'. (2300) 
node_modules\@types\selenium-webdriver\index.d.ts (310,11): Duplicate identifier 'ServiceBuilder'. (2300) 
node_modules\protractor\typings\globals\selenium-webdriver\index.d.ts (12,11): Duplicate identifier 'Driver'. (2300) 
node_modules\protractor\typings\globals\selenium-webdriver\index.d.ts (46,11): Duplicate identifier 'Options'. (2300) 
node_modules\protractor\typings\globals\selenium-webdriver\index.d.ts (310,11): Duplicate identifier 'ServiceBuilder'. (2300) 

如何解决该问题,因为我贝尔一切都安装正确。我正在使用Protractor 4.0.5,它应该与typescript 2.0一起工作。

+0

你能添加一个最小的'* .ts'文件,导致它可能是有用的问题?我对量角器一无所知,但这似乎是类型定义的一个问题,所以我可以尝试提供帮助。 –

+0

@HuyNguyen好的。我将在今天晚些时候添加示例存储库。 –

回答

0

请在protractor处打开问题。它不应该在其包装中部署类型selenium-webdriver

现在,试试这个丑陋的黑客,看它是否解决了问题:

// tsconfig.json 
{ 
    "exclude": [ 
    "node_modules/protractor/typings/global/selenium-webdriver" 
    ] 
} 
2

量角器取出类型声明中的版本5.x版本,那么你可以简单地升级量角器你的版本”重新使用,问题应该消失。

如果你有/想留在4.0.5版本中,你可以随时卸载webdriver的类型,通过运行:

npm uninstall --save-dev @types/selenium-webdriver 
0

尝试使用这样的事情。我修改typeRootsexclude

{ 
"compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "sourceMap": true, 
    "noEmitHelpers": true, 
    "lib": ["es6", "dom"], 
    "types":[ 
    ], 
    "typeRoots": [ 
     "node_modules/@types" 
    ] 
    }, 
    "exclude": [ 
    "node_modules", 
    "node_modules/protractor/node_modules" 
    ], 
    "filesGlob": [ 
    "./src/**/*.ts", 
    "!./node_modules/**/*.ts" 
    ], 
    "awesomeTypescriptLoaderOptions": { 
    "resolveGlobs": true, 
    "forkChecker": true, 
    "compiler": "node_modules/typescript" 
    }, 
    "compileOnSave": false, 
    "buildOnSave": false, 
    "atom": { "rewriteTsconfig": false } 
} 

我创建了一个模板与打字稿2配置量角器:https://github.com/suvroc/protractor-typescript-template