Javascript 在 Android 6 中使用 Cordova 时出现语法错误
Javascript syntax error using Cordova in Android 6
我正在使用 Cordova,但在 Android API 23 (6 Marshmallow) 中有一个语法错误。
在 API 28 (9 Pie) 和 API 21 (5 Lollipop) 上一切正常,但在 API 23 上,我有这些错误:
Uncaught SyntaxError: Unexpected token =>
Uncaught SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
Uncaught SyntaxError: missing ) after argument list
我使用的是 vanilla JS,没有别的。
问题是什么?我该如何解决?
看来问题出在 API 23.
中的 ES6 不兼容
为了解决这个问题,我使用 babel.
sudo npm install --save-dev @babel/preset-env
创建 .babelrc 文件
{
"presets": ["@babel/preset-env"],
"sourceType": "script" //To remove 'use strict' of generated js files
}
然后你可以使用这个命令将你的代码转译成 es5
npx babel src/js -d www/js
可以使用钩子自动执行此命令。
只需创建一个 .sh 文件(例如 build.sh)并向其中添加命令。
将钩子添加到 config.xml 文件
<hook type="before_build" src="hooks/build.sh" />
我正在使用 Cordova,但在 Android API 23 (6 Marshmallow) 中有一个语法错误。
在 API 28 (9 Pie) 和 API 21 (5 Lollipop) 上一切正常,但在 API 23 上,我有这些错误:
Uncaught SyntaxError: Unexpected token =>
Uncaught SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
Uncaught SyntaxError: missing ) after argument list
我使用的是 vanilla JS,没有别的。
问题是什么?我该如何解决?
看来问题出在 API 23.
中的 ES6 不兼容
为了解决这个问题,我使用 babel.
sudo npm install --save-dev @babel/preset-env
创建 .babelrc 文件
{
"presets": ["@babel/preset-env"],
"sourceType": "script" //To remove 'use strict' of generated js files
}
然后你可以使用这个命令将你的代码转译成 es5
npx babel src/js -d www/js
可以使用钩子自动执行此命令。
只需创建一个 .sh 文件(例如 build.sh)并向其中添加命令。
将钩子添加到 config.xml 文件
<hook type="before_build" src="hooks/build.sh" />