gpt4 book ai didi

dojo 构建系统无法识别 es6 语法

转载 作者:行者123 更新时间:2023-12-02 14:05:14 26 4
gpt4 key购买 nike

我正在开发一个 dojo 项目 (1.11.x),最近开始使用 ES6(ES2015) 语法,例如 const、let 和模板文字。它工作得很好,直到我使用 dojo-util 构建项目。我有如下错误

ERROR - Parse error. TypeError: redeclaration of const {variable name}
ERROR - Parse error. illegal character
return `<a href="/xxx/xxx/${a}">${b}</a>`;
^

有没有办法让构建系统识别ES6语法或者绕过语法检查?

最佳答案

最新发布Dojo 1.12从 2016 年 12 月开始更新为使用 Closure Compiler 20160911,支持将 ES6 转译为 ES5。

我在一个项目中拥有旧的 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: ECMASCRIPT5_STRICT 设置为 mention here 来避免 ES6 模块中的“use strict”但它破坏了 Dojo 本身。

关于dojo 构建系统无法识别 es6 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38557290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com