带有Node.js的把手,预编译时出错

时间:2013-11-04 07:53:52

标签: node.js handlebars.js

我一直在使用handlebars.js客户端,我想开始使用预编译模板。我按照我在网上找到的一般说明,包括在Node.js上安装它:

npm install handlebars -g

接下来,我转到我的Node.js目录并尝试编译一个简单的模板:

handlebars test.handlebars -f test.js

我收到错误(命令提示,请注意,我很抱歉):

C:\Users\Administrator\AppData\Roaming\npm\node_modules\handlebars\lib\handlebars.js:1
(function (exports, require, module, __filename, __dirname) { import Handlebar
                                                          ^^^^^^
SyntaxError: Unexpected reserved word
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\Users\Administrator\AppData\Roaming\npm\node_modules\handlebars\bin\handlebars:105:18)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)

我转到这个错误的handlebars.js文件,确定代码肯定不像javascript:

import Handlebars from "./handlebars.runtime";

// Compiler imports
module AST from "./handlebars/compiler/ast";
import { parser as Parser, parse } from "./handlebars/compiler/base";
// ... etc.

我真的不知道这是什么,所以我不知道我做错了什么或我的问题是什么。

1 个答案:

答案 0 :(得分:3)

看起来lib文件夹包含未处理的类ES6模块。所以可能它不是用es6-module-transpiler处理的。我是公开的问题https://github.com/wycats/handlebars.js/issues/642也存在类似问题https://github.com/wycats/handlebars.js/issues/643

我通过安装es6-module-transpiler手动处理文件解决了这个问题,并快速修复了保留错误(某些事情与[“default”]导出)。