2016-07-24 12 views
1

私はdojoプロジェクト(1.11.x)に取り組んでおり、最近const、let、テンプレート・リテラルなどのES6(ES2015)構文を使用し始めました。 dojo-utilを使ってプロジェクトをビルドするまではうまくいきました。以下のようなエラーが表示されますdojoビルド・システムはes6構文を認識しません

ビルドシステムにES6の構文を認識させるか構文チェックをバイパスする方法はありますか?

+0

私はあなたのコードがES6をサポートしているブラウザでのみ実行されることを期待しています(IE10はありません)?そうでなければ、ES6を最初にES5に置き換えなければなりません。問題は – ben

+0

BTWで解決されます。問題は最適化(shrinksafe、closure、またはuglifyjs)のためです。 – ben

答えて

1

2020年12月の最新リリースDojo 1.12は、トランスキングES6からES5をサポートするClosure Compiler 20160911を使用するように更新されました。

私は1つのプロジェクトに古いES5モジュールと新しいものをES6に持っています。

ES6モジュールでは、最初に「use strict」を追加する必要があります。それ以外の場合は、が失敗します。

error(307) Failed to evaluate module tagged as pure AMD 
(fell back to processing with regular expressions). module: app/es6/Test; 
error: SyntaxError: Block-scoped declarations (let, const, function, class) 
not yet supported outside strict mode 

アプリ/ ES6/Dialog.js

"use strict"  
define(["dijit/ConfirmDialog"], (ConfirmDialog) => { 
let id = '1' 
const dialog = new ConfirmDialog({ 
    title: "Delete", 
    content: `Are you sure you want to delete ${id} ?`, 
    style: "width: 300px" 
    }) 
    dialog.show() 
}) 

その後、あなたのapp.profile.jsでoptimizeOptionsオブジェクト

... 
optimizeOptions: { 
    languageIn: 'ECMASCRIPT6', 
    languageOut: 'ECMASCRIPT5' 
}, 
layerOptimize: "closure.keeplines", 
optimize: "closure.keeplines", 
cssOptimize: "comments", 
mini: true, 
stripConsole: "all", 
selectorEngine: "lite", 
useSourceMaps: false, 
... 
layers: { 
    "dojo/dojo": { 
     includeLocales: [ 'en-us' ], 
     include: [ "dojo/dojo", "dojo/hash" ], 
     boot: true, 
     customBase: true  
    } 
    "app/Main": { 
     includeLocales: [ 'en-us' ], 
     include: [ 
      'app/Header', 
      'app/Main' 
     ] 
    }, 
... 

アプリ/ Main.js

define(["app/es6/Dialog"], function(Dialog) { 
    Dialog.show(); 
}); 
を追加

この方法で、ES6を現在のDojoプロジェクトに統合できます。

私もlanguageOutを設定することにより、ES6モジュールに「厳格な使用」を回避しようとしていた。mention hereとしてECMASCRIPT5_STRICTが、それは道場自体を壊します。

+0

答えに感謝します。私はこれを試してみる。 –

+1

これはまだ私のために働いていないので、私はDojoに助けてこれを明確にするように頼んだ。 https://bugs.dojotoolkit.org/ticket/19020#ticket – PaulR

+0

これは未だに未解決の問題であることを確認しましたので、私たちは待たなければなりません。 – PaulR

関連する問題