diff --git a/lib/compilers/typescript-compiler.js b/lib/compilers/typescript-compiler.js index 1cb7c118..98cdaab3 100644 --- a/lib/compilers/typescript-compiler.js +++ b/lib/compilers/typescript-compiler.js @@ -52,6 +52,9 @@ module.exports = function compileTypescript (scriptContent) { const tsConfig = getTypescriptConfig() const res = typescript.transpileModule(scriptContent, tsConfig) + const inputSourceMap = (res.sourceMapText !== undefined) + ? JSON.parse(res.sourceMapText) + : '' // handle ES modules in TS source code in case user uses non commonjs module // output and there is no .babelrc. @@ -64,5 +67,5 @@ module.exports = function compileTypescript (scriptContent) { } } - return compileBabel(res.outputText, JSON.parse(res.sourceMapText), inlineBabelConfig) + return compileBabel(res.outputText, inputSourceMap, inlineBabelConfig) } diff --git a/test/TypeScript.spec.js b/test/TypeScript.spec.js index 4ab00fe3..eac46722 100644 --- a/test/TypeScript.spec.js +++ b/test/TypeScript.spec.js @@ -2,7 +2,7 @@ import { shallow } from 'vue-test-utils' import { resolve } from 'path' import TypeScript from './resources/TypeScript.vue' import jestVue from '../vue-jest' -import { readFileSync, renameSync } from 'fs' +import { readFileSync, renameSync, writeFileSync } from 'fs' import cache from '../lib/cache' beforeEach(() => { @@ -28,3 +28,22 @@ test.skip('generates inline sourcemap', () => { const output = jestVue.process(fileString, filePath) expect(output).toContain(expectedMap) }) + +test('processes without sourcemap', () => { + const configPath = resolve(__dirname, '../tsconfig.json') + const tsconfigString = readFileSync(configPath, { encoding: 'utf8' }) + const tsconfig = JSON.parse(tsconfigString) + tsconfig.compilerOptions.sourceMap = false + writeFileSync(configPath, JSON.stringify(tsconfig)) + const filePath = resolve(__dirname, './resources/TypeScript.vue') + const fileString = readFileSync(filePath, { encoding: 'utf8' }) + + try { + expect(() => jestVue.process(fileString, filePath)).not.toThrow() + } catch (err) { + writeFileSync(configPath, tsconfigString) + throw err + } + + writeFileSync(configPath, tsconfigString) +})