diff --git a/lib/core/renderer.js b/lib/core/renderer.js index f3be97e5bb..821512c7cd 100644 --- a/lib/core/renderer.js +++ b/lib/core/renderer.js @@ -413,7 +413,8 @@ export default class Renderer extends Tapable { // Try to find original position const { line, column, name, source } = smc.originalPositionFor({ line: frame.getLineNumber() || 0, - column: frame.getColumnNumber() || 0 + column: frame.getColumnNumber() || 0, + bias: SourceMapConsumer.LEAST_UPPER_BOUND }) if (line) { frame.lineNumber = line diff --git a/test/debug.test.js b/test/debug.test.js new file mode 100644 index 0000000000..189721bc16 --- /dev/null +++ b/test/debug.test.js @@ -0,0 +1,44 @@ +import test from 'ava' +import { resolve } from 'path' +import rp from 'request-promise-native' +import { Nuxt, Builder } from '../index.js' + +const port = 4009 +const url = (route) => 'http://localhost:' + port + route + +let nuxt = null + +// Init nuxt.js and create server listening on localhost:4000 +test.before('Init Nuxt.js', async t => { + const rootDir = resolve(__dirname, 'fixtures/debug') + let config = require(resolve(rootDir, 'nuxt.config.js')) + config.rootDir = rootDir + config.dev = false + nuxt = new Nuxt(config) + await new Builder(nuxt).build() + + await nuxt.listen(port, 'localhost') +}) + +test('/test/_open (open-in-editor)', async t => { + const { body } = await rp(url('/test/_open?file=pages/index.vue'), { resolveWithFullResponse: true }) + t.is(body, 'opened in editor!') +}) + +test('/test/_open should return error (open-in-editor)', async t => { + const { body } = await rp(url('/test/_open?file='), { resolveWithFullResponse: true }) + t.is(body, 'File is not specified') +}) + +test('/test/error should return error stack trace (Youch)', async t => { + const { response, error } = await t.throws(nuxt.renderAndGetWindow(url('/test/error'))) + t.is(response.statusCode, 500) + t.is(response.statusMessage, 'NuxtServerError') + t.true(error.includes('test youch !')) + t.true(error.includes('