我正在使用Google闭包模板编译2个JS文件。出于某种原因,它根本不喜欢我的箭头函数。例如:
// let showCurrentPage;
showCurrentPage = (i) => {
currentPage = i;
paginationCountLogic(bookMarksArray);
}如果我更改为不同的函数类型,例如:
let showCurrentPage = function(i) {
currentPage = i;
paginationCountLogic(bookMarksArray);
}我的函数可以在我的JS文件中使用或识别。
'showCurrentPage‘是声明的,但它的值永远不是read.ts(6133)。
我的代码运行良好,无需编译。我已经搜索了几个小时了,但我似乎无法解决这个问题。
我甚至尝试将NPM命令从ES6编译为ES5。但这似乎并没有解决这个问题:
npx google-closure-compiler --js=app.js --js=pagination.js --compilation_level ADVANCED_OPTIMIZATIONS --language_in ECMASCRIPT6 --language_out ECMASCRIPT5 --js_output_file=minified.js有什么想法吗?
以下是实际错误:
pagination.js:43: ERROR - [JSC_UNDEFINED_VARIABLE] variable showCurrentPage is undeclared
showCurrentPage = (i) => {
^^^^^^^^^^^^^^^发布于 2019-12-17 18:47:10
我通过另一个问题得到了答案。但事实证明这就是为什么:
原因可能是编译器没有看到调用的函数。高级编译的一部分是删除未使用的代码并重命名方法/变量。
在js或html中,它从不被调用,因为函数调用仅在以下字符串值中定义:
for (var i = 0; i < individualPagesArray.length; i++) {
document.getElementById("numbers").innerHTML += `<button onclick=showCurrentPage(${i+1})>` + individualPagesArray[i] + `</button>`;
}您可以很简单地通过重写以下内容来解决这个问题:
window.showCurrentPage = (i) => {对此:
window['showCurrentPage'] = (i) => {请参阅:https://developers.google.com/closure/compiler/docs/api-tutorial3#removal
https://stackoverflow.com/questions/59177109
复制相似问题