V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yuann72
V2EX  ›  问与答

怎么让 webpack 编译后的文件可以直接在硬盘上打开就正常运行?

  •  
  •   yuann72 · 2017-10-04 09:28:27 +08:00 · 4360 次点击
    这是一个创建于 2640 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用的 vue-cli, 编译完成后会提示:

      Build complete.
    
      Tip: built files are meant to be served over an HTTP server.
      Opening index.html over file:// won't work.
    

    我想要编译后的文件可以直接从硬盘打开 index.html 且正常运行
    能否通过改配置文件来实现?

    8 条回复    2017-10-04 12:50:33 +08:00
    ljcarsenal
        1
    ljcarsenal  
       2017-10-04 09:31:12 +08:00 via iPhone
    如果打包出来的只有一个文件的话应该是可行的 如果有多个文件 涉及到懒加载 不可行
    ipwx
        2
    ipwx  
       2017-10-04 09:34:11 +08:00
    你可以考虑 python -m SimpleHTTPServer (2.x) 或者 python -m http.server (3.x)
    mdluo
        3
    mdluo  
       2017-10-04 09:39:02 +08:00
    https://github.com/zeit/serve

    可以安装成 devDependencies 然后在 scripts 里面分配个命令,也可以全局安装,随处都可以用

    `serve -s dist`

    `-s` 参数是如果是 SPA,可以把路由重定向到 index.html
    yuann72
        4
    yuann72  
    OP
       2017-10-04 09:39:32 +08:00
    好吧 那就是没办法了...
    hronro
        5
    hronro  
       2017-10-04 10:07:32 +08:00
    之所以会有这个提示,并不是因为 webpack 本身打包出来的文件不能直接运行,而是浏览器在访问 file:// 协议的时候,有一些限制。所以,如果你代码里没用到什么特殊的东西的话,应该是可以直接运行的
    airyland
        6
    airyland  
       2017-10-04 11:10:30 +08:00
    在 config 里把 assetsPublicPath 改成 './'
    KeepPro
        7
    KeepPro  
       2017-10-04 11:44:51 +08:00 via Android
    首先 html 是一种标记文本;
    其次它通常是由浏览器来解释执行的;操作系统并不直接执行它;
    最后你这种使用 file 协议导致无法正常运行的情况,直接自己装一个服务器然后用 http 协议直接访问就行。
    meszyouh
        8
    meszyouh  
       2017-10-04 12:50:33 +08:00
    把 webpack 的 publicPath 设置成你的打包 位置的绝对路径就行了, 懒加载也可以 ( 只能是 hash 形式 )
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1055 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:00 · PVG 04:00 · LAX 12:00 · JFK 15:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.