迁移到 Meteor 2.9
Meteor 2.9
在 accounts
包中引入了一些更改,新的方法 Email.sendAsync
,新的方法 Meteor.userAsync
,等等。有关更改的完整细分,请参阅变更日志。
为什么这个新的 API 如此重要?
您可能知道,在 Meteor 中我们使用了一个名为Fibers 的包。此包使在 Meteor 中以同步方式(无需等待 promise 解析)调用异步函数成为可能。
但从 Node 16 开始,Fibers 将停止工作,因此 Meteor 需要远离 Fibers,否则我们将停留在 Node 14 上。
如果您想了解更多关于计划的信息,您可以查看此讨论。
为什么现在进行此更改?
这对旧的 Meteor 应用程序来说将是一个相当大的变化,并且任何 Meteor 应用程序的某些代码部分最终都必须进行调整。因此,尽早开始迁移过程非常重要。
迁移过程从 2.8 版开始。如果您跳过了,我们建议您先查看一下。
是否可以在不更改我的应用程序的情况下更新到此版本?
是的。您可以在不更改应用程序的情况下更新到此版本。
有什么新功能?
让我们从 accounts 和 OAuth 包开始。一些方法必须重新构建才能在将来无需 Fibers 即可工作。当前方法将继续按今天的方式工作,但如果您在自定义登录包中使用我们将在下面提到的某些方法,我们建议您对其进行调整。
现在是异步的内部方法
- _attemptLogin
- _loginMethod
- _runLoginHandlers
- Accounts._checkPassword:仍然像往常一样工作,但现在有一个名为
Accounts._checkPasswordAsync
的新版本。
我们还对 OAuth 服务的处理程序注册表中的异步上下文进行了更改。
现在,OAuth.Register 方法接受异步处理程序,并且可以在内部使用 await 选项,避免使用在 Fibers 上运行的方法,例如HTTP(已弃用的 Meteor 包)、Meteor.wrapAsync
和 Promise.await
。
在更改之前,您会有类似以下内容
OAuth.registerService('github', 2, null, (query) => {
const accessTokenCall = Meteor.wrapAsync(getAccessToken);
const accessToken = accessTokenCall(query);
const identityCall = Meteor.wrapAsync(getIdentity);
…
});
现在您有
OAuth.registerService('github', 2, null, async (query) => {
const accessToken = await getAccessToken(query);
const identity = await getIdentity(accessToken);
const emails = await getEmails(accessToken);
…
});
新的异步方法
我们现在有您已经使用的方法的异步版本。它们是
破坏性异步更改
Accounts.createUserVerifyingEmail
现在完全是异步的
要升级,请从
Meteor.methods({
createUserAccount (user) {
/**
* This seems to be the issue.
* Using the other method `createUser` works as expected.
*/
Accounts.createUserVerifyingEmail({
username: user.username,
email: user.email,
password: user.password,
});
}
});
更改为
Meteor.methods({
async createUserAccount (user) {
await Accounts.createUserVerifyingEmail({
username: user.username,
email: user.email,
password: user.password,
});
}
});
不带 service-configuration 的 accounts-base
现在 accounts-base
不再与 service-configuration
绑定。因此,如果您在项目中不使用第三方登录,则不再需要添加 service-configuration
包。
从低于 2.8 的版本迁移?
如果您从低于 Meteor 2.8 的 Meteor 版本迁移,则可能存在本指南中未列出的重要注意事项。请查看旧的迁移指南以获取详细信息
- 迁移到 Meteor 2.8(从 2.7)
- 迁移到 Meteor 2.7(从 2.6)
- 迁移到 Meteor 2.6(从 2.5)
- 迁移到 Meteor 2.5(从 2.4)
- 迁移到 Meteor 2.4(从 2.3)
- 迁移到 Meteor 2.3(从 2.2)
- 迁移到 Meteor 2.2(从 2.0)
- 迁移到 Meteor 2.0(从 1.12)
- 迁移到 Meteor 1.12(从 1.11)
- 迁移到 Meteor 1.11(从 1.10.2)
- 迁移到 Meteor 1.10.2(从 1.10)
- 迁移到 Meteor 1.10(从 1.9.3)
- 迁移到 Meteor 1.9.3(从 1.9)
- 迁移到 Meteor 1.9(从 1.8.3)
- 迁移到 Meteor 1.8.3(从 1.8.2)
- 迁移到 Meteor 1.8.2(从 1.8)
- 迁移到 Meteor 1.8(从 1.7)
- 迁移到 Meteor 1.7(从 1.6)
- 迁移到 Meteor 1.6(从 1.5)
- 迁移到 Meteor 1.5(从 1.4)
- 迁移到 Meteor 1.4(从 1.3)
- 迁移到 Meteor 1.3(从 1.2)