【发布时间】:2019-12-14 01:28:48
【问题描述】:
我有一个已在 AWS Lambda 上成功运行的 Sapper.js 应用程序。 Lambda 能够将 Sapper 创建的服务器端生成的 HTML 交付给 AWS API Gateway,然后由 AWS API Gateway 将应用程序提供给用户。我正在使用 S3 来托管客户端资产(脚本、webpack 块等)。 S3 存储桶与 API Gateway 位于不同的域中。
我遇到的问题是我需要为这些脚本设置一个资产前缀,以便 Sapper 可以找到它们。目前我所有的客户端脚本都包含相对链接,看起来像这样:<script src="/client/be33a1fe9c8bbaa6fa9d/SCRIPT_NAME.js"></script> 我需要让它们看起来像这样:<script src="https://AWS_S3_BUCKET_ENDPOINT.com/client/be33a1fe9c8bbaa6fa9d/SCRIPT_NAME.js"></script>
查看Sapper docs,我看到我可以为客户端和服务器指定一个基本网址。但是,更改此基本 url 会破坏我的应用程序并导致 Lambda 渲染页面返回 404 错误。
我知道在使用 Next.js 时,我可以通过修改 next.config.js 文件来包含以下内容来完成此操作:
module.exports = {
assetPrefix: "https://AWS_S3_BUCKET_ENDPOINT.com/client",
}
但我不知道如何在 Sapper 中执行此操作。我需要修改捆绑器(使用 webpack)配置吗?还是有其他方法?
谢谢。
【问题讨论】:
标签: javascript amazon-s3 webpack svelte sapper