意外标识符"getProject"。异步变量声明后的预期';'



我在一个网页上有以下JS。

<script async type="module">
import {projectCode} from "./assets/js/config.js";
import {getProject} from "./assets/js/saleproject.js";
import {getAccount} from "./assets/js/account.js";
import Vue from 'https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.esm.browser.js'
let projectData = await getProject(projectCode);
...
</script>
然后将数据存储在Vue.js中以呈现页面。为了进一步了解上下文,上面引用了一个单独文件中的以下代码:
import { server } from './config.js';
export async function getProject(projectCode) {
const response = await fetch(server + '/saleproject/GetByCode/' + projectCode);
const projectData = await response.json();
return projectData;
}

一切正常,除了在iphone上,我得到以下错误,它破坏了我的代码,并阻止Vue.js渲染页面:

SyntaxError: Unexpected identifier 'getProject'. Expected ';' after variable declaration.

我已经尝试过将它包装在一个async函数中,但仍然没有运气:

(async function () {
let projectData = await getProject(projectCode);
}())

返回一个Vue.js相关的错误:

Error in data(): "ReferenceError: projectData is not defined"

我不确定需要改变什么才能在iphone上正常工作(在桌面Safari中工作良好)

您尝试的解决方案是正确的,唯一的问题是let的范围是IIFE范围。

按如下方式重写代码:

getProject(projectCode).then(projectData => {
// All code goes here
});

这个问题最初是由缺乏顶级等待支持引起的。

最新更新