前言
- 在小程序中,只要写了aync await(或者是你引入的库中写了),如果你使用了babel编译且babel的版本大于7,则会出现这个问题。
原因
- 小程序中会禁用一些动态写法,在babel/runtime中引入的index.js中写了这么一段:
// TODO(Babel 8): Remove this file.
var runtime = require("../helpers/regeneratorRuntime")();
module.exports = runtime;
// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
try {
regeneratorRuntime = runtime;
} catch (accidentalStrictMode) {
if (typeof globalThis === "object") {
globalThis.regeneratorRuntime = runtime;
} else {
Function("r", "regeneratorRuntime = r")(runtime);
}
}
- 这里会走到
Function("r", "regeneratorRuntime = r")(runtime);
中,小程序不支持该语法,但是浏览器支持,可以在小程序控制台中测试一下。
解决
- 解决方法很多,一般来说,我们需要使用regenerator-runtime的0.11.0版本,对babel/runtime打个补丁包,去了不合法语法,加上
require('regenerator-runtime')
,另外,需要配置别名:
alias: {
'regenerator-runtime': path.resolve('./node_modules', 'regenerator-runtime'),
},
- 此时即可正常。
文章来源地址https://www.toymoban.com/news/detail-506701.html
文章来源:https://www.toymoban.com/news/detail-506701.html
到了这里,关于【小程序】 解决 Function(...) is not a function问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!