Webpack 网页包加载程序模块。导出异常行为
我正在编写一个自定义网页加载程序 它可以将把手转换为把手模板,但在导出对象而不是函数时,我遇到了一个奇怪的问题 基本上这很好:Webpack 网页包加载程序模块。导出异常行为,webpack,handlebars.js,Webpack,Handlebars.js,我正在编写一个自定义网页加载程序 它可以将把手转换为把手模板,但在导出对象而不是函数时,我遇到了一个奇怪的问题 基本上这很好: 'module.exports = (Handlebars).template(' + source + ');' 此操作失败:出现错误(在仅运行时模式下运行时无法编译部分foo): 有什么不同吗 module.exports = () => { compile: handlebars.template(templateSpec), attributes
'module.exports = (Handlebars).template(' + source + ');'
此操作失败:出现错误(在仅运行时模式下运行时无法编译部分foo
):
有什么不同吗
module.exports = () => {
compile: handlebars.template(templateSpec),
attributes: myFrontMatterData
}
这无法工作,因为它不是有效的JavaScript,您应该获得一个语法错误:意外标记:
。当您使用花括号时,arrow函数有一个常规块,它不会隐式返回对象,而是与常规函数类似。对于块体,正确的功能是:
module.exports = () => {
return {
compile: handlebars.template(templateSpec),
attributes: myFrontMatterData
}
}
您仍然可以使用对象文字作为隐式返回,但由于保留了花括号来表示块,因此需要将对象文字括在括号中(另请参见):
这无法工作,因为它不是有效的JavaScript,您应该获得一个语法错误:意外标记:
。当您使用花括号时,arrow函数有一个常规块,它不会隐式返回对象,而是与常规函数类似。对于块体,正确的功能是:
module.exports = () => {
return {
compile: handlebars.template(templateSpec),
attributes: myFrontMatterData
}
}
您仍然可以使用对象文字作为隐式返回,但由于保留了花括号来表示块,因此需要将对象文字括在括号中(另请参见):
任何路过的人,我都这样解决了
var slug = template ?
'var Handlebars = require(' + JSON.stringify(runtimePath) + ');\n'
+ 'function __default(obj) { return obj && (obj.__esModule ? obj["default"] : obj); }\n'
+ 'var fn = Handlebars.template(' + template + ');\n'
+ 'fn.attributes = ' + JSON.stringify(source.attributes) + ';\n'
+ 'module.exports = fn;' :
'module.exports = function(){return "";};';
任何路过的人,我都这样解决了
var slug = template ?
'var Handlebars = require(' + JSON.stringify(runtimePath) + ');\n'
+ 'function __default(obj) { return obj && (obj.__esModule ? obj["default"] : obj); }\n'
+ 'var fn = Handlebars.template(' + template + ');\n'
+ 'fn.attributes = ' + JSON.stringify(source.attributes) + ';\n'
+ 'module.exports = fn;' :
'module.exports = function(){return "";};';
嘿,Michael,谢谢你提供的信息,我试着用括号括起来,但它仍然不能提供导出单个函数时的相同行为。基本上,当它从对象方法抛出错误时运行编译:在仅运行时模式下运行时,无法编译部分myPartial,但当它作为单个函数运行时,它会呈现良好状态。因此,它可以很好地导出,但由于某种原因,当函数作为和对象的方法导出时,函数会以不同的结果调用。想知道这是webpack模块api的边缘情况,还是有其他可能?嘿,Michael,谢谢你提供的信息,我尝试用括号括起来,但它仍然没有提供导出单个函数时的相同行为。基本上,当它从对象方法抛出错误时运行编译:在仅运行时模式下运行时,无法编译部分myPartial,但当它作为单个函数运行时,它会呈现良好状态。因此,它可以很好地导出,但由于某种原因,当函数作为和对象的方法导出时,函数会以不同的结果调用。想知道这是webpack模块api的一个边缘案例,还是有其他可能性?