Meituan-Dianping / mpvue

基于 Vue.js 的小程序开发框架,从底层支持 Vue.js 语法和构建工具体系。

Home Page:http://mpvue.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

运行 mpvue-simple 抛出 Module build failed: TypeError: Cannot read property 'platform' of undefined

JunbinDeng opened this issue · comments

[扼要问题描述]

mpvue 版本号:

mpvue-simple @1.0.17
mpvue-template-compiler @2.0.0

最小化复现代码:

// 示例代码:
npm i mpvue-simple -g
echo -e '<template><h1>Hello {{msg}}!</h1></template>\n<script>\nexport default {\n  data () {\n    return { msg: 233 }\n  }\n}\n</script>\n<style>\n  h1 {\n    color: red;\n  }\n</style>' > App.vue
mpvue-simple --build

问题复现步骤:

  1. 按照 mpvue-simple 的官方文档在控制台中执行命令
  2. 控制台中抛出以下错误
ERROR in ./~/mpvue-simple/~/mpvue-loader/lib/template-compiler?{"id":"data-v-818f14d6","hasScoped":true,"transformToRequire":{"video":"src","source":"src","img":"src","image":"xlink:href"}}!./~/mpvue-simple/~/mpvue-loader/lib/selector.js?type=template&index=0!./src/pages/index/index.vue
Module build failed: TypeError: Cannot read property 'platform' of undefined
    at Object.compileToWxml (/Users/junbindeng/WebstormProjects/ceiling-animator/node_modules/mpvue-simple/node_modules/mpvue-template-compiler/build.js:5812:20)
    at genComponentWxml (/Users/junbindeng/WebstormProjects/ceiling-animator/node_modules/mpvue-simple/node_modules/mpvue-loader/lib/mp-compiler/index.js:45:75)
    at createWxml (/Users/junbindeng/WebstormProjects/ceiling-animator/node_modules/mpvue-simple/node_modules/mpvue-loader/lib/mp-compiler/index.js:92:19)
    at Object.compileWxml (/Users/junbindeng/WebstormProjects/ceiling-animator/node_modules/mpvue-simple/node_modules/mpvue-loader/lib/mp-compiler/index.js:101:10)
    at Object.module.exports (/Users/junbindeng/WebstormProjects/ceiling-animator/node_modules/mpvue-simple/node_modules/mpvue-loader/lib/template-compiler/index.js:40:15)
 @ ./src/pages/index/index.vue 8:0-380

  Build failed with errors.

观察到的表现:

mpvue-template-compiler/build.js 的 compileToWxml 方法 fileExt 参数未定义导致异常发生

function compileToWxml (compiled, options, fileExt) {
    var code;
    switch(fileExt.platform) {
        case 'swan':
            code = compileToWxml$2(compiled, options);
            break
        case 'wx':
            code = compileToWxml$1(compiled, options);
            break
        default:
            code = compileToWxml$1(compiled, options);
    }
    return code
}