diff --git a/lib/loader.js b/lib/loader.js index c4d00c3..35f85c1 100644 --- a/lib/loader.js +++ b/lib/loader.js @@ -24,7 +24,7 @@ var hasBuble = !!tryRequire('buble-loader') // for mp js var { compileMP, compileMPScript } = require('./mp-compiler') -var { defaultStylePart } = require('./mp-compiler/util') +var { defaultPart } = require('./mp-compiler/util') var rewriterInjectRE = /\b(css(?:-loader)?(?:\?[^!]+)?)(?:!|$)/ @@ -103,7 +103,11 @@ module.exports = function (content) { // fix #153: 根组件没有 style 模块,不生成页面的 wxss,补齐内容方便加载 vendor.wxss if (!parts.styles.length) { - parts.styles.push(defaultStylePart) + parts.styles.push(defaultPart('style')) + } + // fix #562: 组件没有 script 模块,会阻塞编译 + if (!parts.script) { + parts.script = defaultPart('script') } var hasScoped = parts.styles.some(function (s) { return s.scoped }) diff --git a/lib/mp-compiler/parse-ts.js b/lib/mp-compiler/parse-ts.js index 44acaf4..8b42334 100644 --- a/lib/mp-compiler/parse-ts.js +++ b/lib/mp-compiler/parse-ts.js @@ -57,7 +57,7 @@ function delint (sourceFile) { switch (node.kind) { case ts.SyntaxKind.ImportDeclaration: // 只处理 import Comp from 'xxx.vue' - if (node.importClause.name) { + if (node.importClause && node.importClause.name) { importsMap[node.importClause.name.escapedText] = node.moduleSpecifier.text } // report(node, 'import') diff --git a/lib/mp-compiler/util.js b/lib/mp-compiler/util.js index 26aa5b1..27726f5 100644 --- a/lib/mp-compiler/util.js +++ b/lib/mp-compiler/util.js @@ -121,23 +121,24 @@ function getBabelrc (src) { return '' } -const defaultStylePart = { - type: 'style', - content: '\n', - start: 0, - attrs: {}, - end: 1, - map: { - version: 3, - sources: [], - names: [], - mappings: '', - sourcesContent: [] +const defaultPart = type => { + return { + type, + content: '\n', + start: 0, + attrs: {}, + end: 1, + map: { + version: 3, + sources: [], + names: [], + mappings: '', + sourcesContent: [] } } module.exports = { - defaultStylePart, + defaultPart, cacheFileInfo, getFileInfo, getCompNameAndSrc, diff --git a/lib/selector.js b/lib/selector.js index facb9e0..aa21182 100644 --- a/lib/selector.js +++ b/lib/selector.js @@ -5,7 +5,7 @@ var path = require('path') var parse = require('./parser') var loaderUtils = require('loader-utils') -var { defaultStylePart } = require('./mp-compiler/util') +var { defaultPart } = require('./mp-compiler/util') module.exports = function (content) { this.cacheable() @@ -17,6 +17,6 @@ module.exports = function (content) { if (Array.isArray(part)) { part = part[query.index] } - part = part || defaultStylePart + part = part || defaultPart('style') this.callback(null, part.content, part.map) } diff --git a/package.json b/package.json index ff45960..bb1c8ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mpvue-loader", - "version": "1.1.2", + "version": "1.1.3", "description": "mpvue single-file component loader for Webpack", "main": "index.js", "repository": {