gpt4 book ai didi

javascript - 为什么我的等待在我的功能中不起作用? "SyntaxError: await is only valid in async function"

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:55 25 4
gpt4 key购买 nike

我有一个函数 -

async function run() {
const drives = await getDrives()
drives.forEach(function (item) {
item.size = fileSize(item.size)
if (item.mountpoints.length > 0) {
item.path = item.mountpoints[0].path
} else {
item.path = 'N/A'
}

})

app.get('/', function (req, res) {
res.render('record', {
drives: drives
})
});

app.post('/record', (req, res) => {
const pExists = pathExists.sync(req.body.path)
const i = req.body.url
const test = i.lastIndexOf('/')
const id = i.substring(test + 1)

if (i.includes("/album/")) {
sid = `spotify:album:${id}`
} else if (i.includes("/playlist/")) {
sid = `spotify:playlist:${id}`
} else {
console.log('failed')
}

if (pExists === true) {
try {
await myModule.mount(req.body.path, userDetails.path)
fs.writeFileSync(`${userDetails.path}/diskplayer.contents`, sid)
res.render('success', {
path: req.body.path,
url: req.body.url
})
} catch (err) {
res.render('failed', {
error: err
})
}
}
});

在第 60 行,我正在尝试等待 myModule.mount

await myModule.mount(req.body.path, userDetails.path)

但是我收到错误 -

await myModule.mount(req.body.path, userDetails.path)
^^^^^

SyntaxError: await is only valid in async function
at Module._compile (internal/modules/cjs/loader.js:891:18)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
at Module.load (internal/modules/cjs/loader.js:811:32)
at Function.Module._load (internal/modules/cjs/loader.js:723:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)
at internal/main/run_main_module.js:17:11

虽然我在第 27 行等待

const drives = await getDrives()

看起来工作正常。我似乎无法弄清楚我做错了什么..

最佳答案

每当您使用 Async/Await 时,请始终记住,只有当 Promise 生成函数或任务声明为 async 函数时,我们才能使用 await。对于使用await,请将其使用的函数设为async,并将全局函数或父函数设为async 无效。所以在你的情况

app.post('/record', async(req, res) => {
....
await myModule.mount(req.body.path, userDetails.path)
....
}

会起作用的。

const drives = await getDrives()

该行位于 run() 函数中,而不是在 run() 函数中的函数内,因此它可以正常工作。

关于javascript - 为什么我的等待在我的功能中不起作用? "SyntaxError: await is only valid in async function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60547108/

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