Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webpack 网页包加载程序模块。导出异常行为_Webpack_Handlebars.js - Fatal编程技术网

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的一个边缘案例,还是有其他可能性?