У меня проблема с тестами e2e в проекте после того, как я выполнил обновление до Angular 6. Ранее тесты работали отлично, теперь есть проблема, что файлы .ts не компилируются: Ошибка: TSError: ⨯ Не удаетсяскомпилировать TypeScript .У меня ничего не изменилось после миграции в файл angular.json.Я пытался найти, какие именно свойства в конфигурации отвечают за перенос, но не смог найти какой-либо конкретный ответ.Тогда я предположил, что это
beforeLaunch: function() {
require('ts-node').register({
project: 'e2e/tsconfig.e2e.json'
});
},
Кто-нибудь знает, что может быть не так?
- Версия узла:
v8.11.4
- Версия транспортира:
5.4.0
- Угловая версия:
6.1.6
- Версия угловой CLI:
6.1.5
- Браузер (ы):
Chrome
- Операционная система и версия
Windows 10.0.17134
protractor.conf.js
const { SpecReporter } = require('jasmine-spec-reporter');
const jasmineReporters = require('jasmine-reporters');
const protractorImageComparison = require('protractor-image-comparison');
require('ts-node/register');
require('tsconfig-paths/register');
const { LoginWindow } = require('./e2e/loginWindow.po.js');
exports.config = {
allScriptsTimeout: 30000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
capabilities: {
'browserName': 'chrome',
chromeOptions: {
args: [ "--no-sandbox", "--disable-gpu", "--window-size=1920x1080" ]
}
},
directConnect: true,
baseUrl: 'http://localhost:4300/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
beforeLaunch: function() {
require('ts-node').register({
project: 'e2e/tsconfig.e2e.json'
});
},
onPrepare() {
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: './',
filePrefix: '...'
}));
browser.protractorImageComparison = new protractorImageComparison(
{
actualFolder: '...',
baselineFolder: '...',
diffFolder: '...',
screenshotPath: '...',
tempFullScreenFolder: '...',
autoSaveBaseline: true,
ignoreAntialiasing: true,
ignoreTransparentPixel: true,
}
);
loginPage = new LoginWindow();
browser.waitForAngularEnabled(false).then(() => {
return browser.get('...').then(() => {
loginPage.loginWindowInternal().click().then(() => {
browser.sleep(5000);
}).then(() => {
loginPage.loginWindowUserName().isPresent().then((result) => {
if (result) {
...
browser.sleep(5000);
}
});
});
});
});
}
};
tsconfig.e2e.json
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/e2e",
"module": "commonjs",
"target": "es5",
"types":[
"jasmine",
"node"
]
}
}
tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"baseUrl": "src",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2016",
"dom"
],
"paths": {
...
},
"module": "es2015"
}
}
angular.json
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
...
"...-e2e": {
"root": "e2e",
"sourceRoot": "e2e",
"projectType": "application",
"architect": {
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "./protractor.conf.js"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"e2e/tsconfig.e2e.json"
],
"exclude": []
}
}
}
}
},
"defaultProject": "...",
"schematics": {
"@schematics/angular:component": {
"prefix": "app",
"styleext": "scss"
},
"@schematics/angular:directive": {
"prefix": "app"
}
}
}
Вывод результатов выполнения теста
[11:44:42] E/launcher - ### Error: TSError: ⨯ Unable to compile TypeScript:
e2e/....e2e-spec.ts(27,111): error TS2322: Type '0' is not assignable to type '{ label: number; sent: () => any; trys: any[]; ops: any[]; }'.
at createTSError (...\node_modules\ts-node\src\index.ts:261:12)
at getOutput (...\node_modules\ts-node\src\index.ts:367:40)
at Object.compile (...\node_modules\ts-node\src\index.ts:558:11)
at Module.m._compile (...\node_modules\ts-node\src\index.ts:439:43)
at Module.m._compile (...\node_modules\ts-node\src\index.ts:439:23)
at Module._extensions..js (module.js:663:10)
at require.extensions.(anonymous function) (...\node_modules\ts-node\src\index.ts:442:12)
at Object.require.extensions.(anonymous function) [as .ts] (...\node_modules\ts-node\src\index.ts:442:12)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
[11:44:42] E/launcher - Process exited with error code 100
An unexpected error occurred: undefined
ПРИМЕЧАНИЕ. Я почти уверен, что проблема заключается в том, что не компилируются файлы машинописного текстапотому что, когда я изменил файл LoginWindow на класс машинописного текста и импортировал его в protractor.conf.js
const { LoginWindow } = require('./e2e/loginWindow.po');
, я получил ошибку:
[11:16:01] E/configParser - ...\e2e\loginWindow.po.ts:1
(function (exports, require, module, __filename, __dirname) { import { browser, element, by } from 'protractor';
^^^^^^
SyntaxError: Unexpected token import
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:616:28)
at Module.m._compile (...\node_modules\ts-node\src\index.ts:439:23)
at Module._extensions..js (module.js:663:10)
at Object.require.extensions.(anonymous function) [as .ts] (...\node_modules\ts-node\src\index.ts:442:12)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
An unexpected error occurred: undefined