У меня есть проект, в котором я использую TS и Rollup. Мой код собирается и работает нормально, но когда я запускаю тесты через npm run test
, они терпят неудачу с сообщением об ошибке SyntaxError: Unexpected token {
.
Теперь я знаю, что проблема связана с синтаксисом ES6, потому что я использую import
в своем тестовом файле, и кажется, что тест не переносится, но я не уверен, почему.
Моя соответствующая часть package.json:
"main": "./dist/index.js",
"module": "dist/index.es.js",
"types": "./dist/index.d.ts",
"scripts": {
"build": "rollup -c",
"watch": "rollup -cw",
"prepublish": "rollup -c > index.js && BROWSER=true rollup -c > browser.js",
"clean": "rm -rf dist/",
"test": "mocha -r ts-node/register src/**/*.spec.ts",
"testdebug": "mocha --inspect-brk --colors --recursive --require ts-node/register --watch-extensions ts \"**/*spec.ts\" --exclude \"node_modules/**\"",
"lint": "tslint --project tsconfig.json -t codeFrame"
},
"devDependencies": {
"@types/chai": "4.1.7",
"@types/chai-as-promised": "7.1.0",
"@types/long": "4.0.0",
"@types/mocha": "5.2.6",
"@types/node": "11.9.4",
"@types/sinon": "7.0.6",
"@types/sinon-chai": "3.2.2",
"@types/supertest": "2.0.7",
"@types/uuid": "3.4.4",
"chai": "4.2.0",
"chai-as-promised": "7.1.1",
"husky": "1.3.1",
"lint-staged": "8.1.4",
"mocha": "5.2.0",
"mocha-jenkins-reporter": "0.4.1",
"prettier": "1.16.4",
"rollup": "^1.10.0",
"rollup-plugin-replace": "^2.2.0",
"rollup-plugin-typescript2": "^0.20.1",
"sinon": "7.2.3",
"sinon-chai": "3.3.0",
"supertest": "3.4.2",
"ts-node": "8.0.2",
"tslint": "5.12.1",
"tslint-config-prettier": "1.18.0",
"tslint-config-standard": "8.0.1",
"tslint-microsoft-contrib": "6.0.0",
"typescript": "^3.3.3"
},
Мой файл test.spec.ts:
import { loginUser } from './loginUser'
console.log(loginUser)
Мой файл tsconfig: (Я уже пытался удалить spec-файлы из exclude, но, к сожалению, он такой же)
{
"compilerOptions": {
"target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
"module": "es6", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
"declaration": true, /* Generates corresponding '.d.ts' file. */
"outDir": "./dist", /* Redirect output structure to the directory. */
"strict": true, /* Enable all strict type-checking options. */
"skipLibCheck": true,
"sourceMap": true,
"moduleResolution": "node"
},
"exclude":[
"node_modules",
"dist",
"./**/*.spec.ts",
"./test/**/*.ts"
]
}
Мой файл rollup.config
import typescript from 'rollup-plugin-typescript2'
import replace from 'rollup-plugin-replace'
import pkg from './package.json'
export default {
input: 'src/index.ts',
output: [
{
file: pkg.main,
format: 'cjs',
},
{
file: pkg.module,
format: 'es',
},
],
external: [
...Object.keys(pkg.dependencies || {}),
...Object.keys(pkg.peerDependencies || {}),
],
plugins: [
typescript({
typescript: require('typescript'),
}),
replace({
'process.browser': !!process.env.BROWSER
})
],
}