Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

使用了vux-loader后,在chrome上debug,查看到的.vue文件,每条语句前的空格都没有了 #26

Open
custcy opened this issue Aug 16, 2017 · 7 comments

Comments

@custcy
Copy link

custcy commented Aug 16, 2017

配置如下

module.exports = vuxLoader.merge(webpackConfig, {
plugins: ['vux-ui', 'progress-bar', 'duplicate-style', {
name: 'i18n',
vuxStaticReplace: false,
staticReplace: false,
extractToFiles: './src/locales/components.yml',
localeList: ['en', 'zh-CN']
}]
})
使用了vux-loader后,在chrome上debug,查看到的.vue文件,每条语句前的空格都没有了。但是js文件正常。

vux-loader的版本1.1.0。

例如,在chrome查看一个.vue文件:

import XButton from 'vux/src/components/x-button/index.vue'
import XHeader from 'vux/src/components/x-header/index.vue'

export default {
name: 'recoverpwd',
components: {
XButton,
XHeader
},
data () {
return {
msg: ''
}
},
methods: {
fetchData: function () {
let login = this.$route.params.login
this.msg = this.$t('msgAskAdminResetPassWithArg', {login: login})

},
Login: function () {
this.$router.push({ name: 'login' })
}
},
created: function () {
this.fetchData()
}
}

如果使用配置:
module.exports = webpackConfig
则在chrome短查看.vue文件的语句前面空格是被保留的。

@airyland
Copy link
Owner

目前会有这样的问题,原因是正则匹配需要,后面重写 parser 后会修复。

@custcy
Copy link
Author

custcy commented Aug 16, 2017

@airyland

thanks, 这么快就给出了回复。这个问题其实不会太大,但是有一个跟这个相关的问题,影响特别大,会导致在vscode中通过chrome debugger调试时,.vue文件里的断点错位。

主要有两个原因,第一,vue-loader把template和i18n给去掉了,但是正确的做法应该是,内容去掉,但是保留同样数目的空行。否则断点错位。

第二,import { Group } from 'vux' 好像会翻译成两行,这样也会导致断点错位。不过这个问题,比较好避免,我使用多行写import语句就可以避免这个问题,例如: import { Group
} from 'vux'

@airyland
Copy link
Owner

谢谢反馈,接下来版本会保留相同空行并且保证解析结果和原来行数一致。

@custcy
Copy link
Author

custcy commented Aug 18, 2017

补充一个绕过第一点原因的方法:
把js从.vue文件中提取出来,放到一个单独的js文件中。

例如:
Login.vue 文件
...

<script>
import loginimpl from './loginimpl.js'
export default loginimpl
</script>

...

loginimpl.js 文件
import {
XSwitch,
Alert,
Group,
XInput,
XButton,
XHeader } from 'vux'
...
export default {
name: 'login',
components: {
XSwitch,
Alert,
...

@mirari
Copy link

mirari commented Dec 12, 2017

使用airyland/vux2模板创建的项目,现在在devtool上完全无法定位到vue源码:
snipaste20171212_115902
vux-loader版本是1.1.28。
除非将eval-source-map改为cheap-module-eval-source-map
此时虽然能看到源码,但是症状与主楼描述一样,没有空格,非常影响调试体验。
这个问题在vux文档上完全没有提及,是我在技术选型时遇到的重大障碍,希望能够尽快解决。

Repository owner deleted a comment from huang34 Dec 12, 2017
@eyasliu
Copy link

eyasliu commented Oct 16, 2018

function trimLine (str) {
let isImport = false
let list = str.split('\n')
for (let i = 0; i < list.length; i++) {
let currentLine = trim(list[i])
if (/import/.test(currentLine) && !/from\s+('|")vux('|")/.test(currentLine)) {
isImport = true
} else if (/from\s+('|")(.+)('|")/.test(currentLine)) {
if (isImport) {
isImport = false
}
} else {
if (isImport) {
list[i] = trim(list[i])
}
}
}
return list.join('\n')
}

请问为什么去掉了缩进,这样在调试的时候非常的不方便呢

@eyasliu
Copy link

eyasliu commented Oct 16, 2018

一年多过去了,请问有没有修复的计划

目前会有这样的问题,原因是正则匹配需要,后面重写 parser 后会修复。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants