【发布时间】:2021-10-29 15:17:55
【问题描述】:
我正在使用 AWS Amplify 对新的 SvelteKit FE 进行一些操作,以使用 Cognito 服务对我的应用程序进行身份验证,并且一切都在开发模式下运行良好。但后来,我尝试构建它以进行部署,这就是有趣的开始......
首先,我无法简单地构建应用程序。 Vite 出现错误,无法正确“解释”“浏览器”字段!? :
'request' is not exported by __vite-browser-external, imported by node_modules/@aws-sdk/credential-provider-imds/dist/es/remoteProvider/httpRequest.js
此问题记录在此处 (https://github.com/aws/aws-sdk-js/issues/3673) 和此处 (https://github.com/aws-amplify/amplify-ui/issues/268)。
我应用了建议的解决方案,但 ErikCH 在 svelte.config.cjs 文件中添加了一个别名:
resolve: {
alias: {
"./runtimeConfig": "./runtimeConfig.browser"
}
}
所以现在,自从应用程序顺利构建以来,我又回到了正轨。但是后来,我尝试使用“npm run preview”运行应用程序,但它在这条消息上停止了:
TypeError: Amplify.configure is not a function
我仔细检查了我的代码,没有发现任何缺失或不合适的地方。这是该函数的导入和调用:
...
import Amplify from '@aws-amplify/core';
import Auth from "@aws-amplify/auth";
import awsconfig from "../aws-exports";
Amplify.configure(awsconfig);
...
如前所述,该项目以开发模式运行,全部使用纯 Javascript,没什么特别的。我更新到最新的包...这里是我的实际版本:
@sveltejs/kit": "^1.0.0-next.159
vite v2.5.1
"aws-amplify": "^4.2.5"
node v14.17.5
npm v7.21.1
我看到 cmets 关于完全删除 Amplify 库并编写包装器以直接调用 Cognito,但我发现这不是很有效率和麻烦。所以,我最后的办法是调用 Stackoverflow 来救援! ;-)
Edit #1 我意识到这个错误发生在 app.js 中,即 FE 应用程序的服务器端。这个不对。这必须在浏览器中运行。怎么会出现在服务器端???
【问题讨论】:
-
这是什么
runtimeConfig.js文件?我没有。
标签: amazon-web-services amazon-cognito aws-amplify vite sveltekit