3

私はしばらくの間、クライアント側で handlebars.js を使用しており、事前にコンパイルされたテンプレートを使用したいと考えていました。Node.js へのインストールを含め、Web で見つけた一般的な手順に従いました。

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.

これが何なのかよくわからないので、何が間違っていたのか、何が問題なのかわかりません。

4

1 に答える 1

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"] エクスポートに関する何か)。

于 2013-11-04T12:22:36.957 に答える