【发布时间】:2018-03-21 03:15:39
【问题描述】:
我决定在我今天正在启动的一个新项目中尝试 WebPack,我从源映射中得到了非常奇怪的行为。我在文档中找不到任何关于它的信息,在浏览 StackOverflow 时也找不到其他人遇到此问题。
我目前正在查看Vue-CLI's WebPack template 制作的 HelloWorld 应用程序——没有对代码、构建环境或任何内容进行任何更改。
我安装了所有东西并像这样运行它:
vue init webpack test && cd test && npm install && npm run dev
查看我的源地图,我看到以下内容:
这是一团糟。为什么会有三个版本的HelloWorld.vue和App.vue?更糟糕的是,每个版本的代码版本都略有不同,并且没有一个与原始源代码匹配。 HellowWorld.vue 位于根目录确实 匹配原始源,但它在下面而不是在 ./src/components 文件夹中做了什么?最后,为什么没有第四个App.vue 有它的原始来源?
据我所知,这可能与 WebPack 加载器有关。不过,我从来没有在任何其他捆绑器上遇到过这类问题。以下是使用 Browserify Vue-CLI 模板的完全相同步骤的示例:
没有webpack:// 架构,每个文件只有一个副本,这些文件实际上包含原始源代码(对源映射很重要),没有意外@ 987654334@或(webpack)-hot-middleware,没有.子目录,....只是源代码。
【问题讨论】:
-
缺乏有意义的源映射使得调试和诊断代码问题变得异常困难。例如,我尝试让 Vuex 工作,但我的状态总是空的。我花了一个小时才开始明白为什么。
-
你确定这是一个 webpack 问题吗,你有没有尝试过,例如,使用不同的浏览器或更改 source map 类型?可能与热重新加载/热模块更换有关,这不会触发整个页面重新加载(源地图通常由浏览器缓存)。重新加载整页后,你能看到
HelloWorld.vue的多个版本吗? -
我尝试过其他浏览器,但没有尝试更改源地图类型。我可以尝试一些并报告。
-
我刚试过
source-map、inline-source-map、cheap-source-map、inline-cheap-module-source-map和eval。尽管来自eval的源映射更好,但它们仍然存在许多相同的问题,包括每个源文件都有 3-4 个版本。我会尝试禁用热重载,看看是否有帮助。 -
我禁用了热模块重新加载,只是使用源映射进行了标准构建——同样奇怪的输出。
标签: javascript node.js webpack webpack-dev-server source-maps