【发布时间】:2021-08-16 18:26:02
【问题描述】:
我正在尝试使用 CDK 在 AWS 的 Amplify 中部署 next.js (ssr) 应用程序,但 Amplify 无法将该应用程序识别为 next.js ssr。但是,当我使用 AWS UI 手动执行此操作时,应用程序被识别为 SSR 并按预期工作。
这是由 aws-cdk/aws-amplify v118 生成的:
import * as cdk from '@aws-cdk/core';
import * as amplify from '@aws-cdk/aws-amplify';
import codebuild = require('@aws-cdk/aws-codebuild');
export class AmplifyStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props: cdk.StackProps) {
super(scope, id, props);
const sourceCodeProvider = new amplify.GitHubSourceCodeProvider({
owner: '.....',
repository: '....',
oauthToken: cdk.SecretValue.secretsManager('github-token'),
});
const buildSpec = codebuild.BuildSpec.fromObjectToYaml(
{
version: 1,
applications: [
{
frontend: {
phases: {
preBuild: {
commands: [
"npm install"
]
},
build: {
commands: [
"npm run build"
]
}
},
artifacts: {
baseDirectory: ".next",
files: [
"**/*"
]
},
cache: {
paths: [
"node_modules/**/*"
]
}
}
}
]
}
);
const amplifyApp = new amplify.App(this, "cdk-nf-web-app", {
sourceCodeProvider: sourceCodeProvider,
buildSpec: buildSpec
});
amplifyApp.addBranch('develop', {
basicAuth: amplify.BasicAuth.fromGeneratedPassword('dev')
});
amplifyApp.addCustomRule({
source: "</^[^.]+$|\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>",
target: "/index.html",
status: amplify.RedirectStatus.REWRITE
});
}
}
这与我从 UI 手动执行 AWS 生成的内容相同。这里的区别是缺少框架识别,如图所示。有什么想法吗?
【问题讨论】:
-
我也有同样的问题。还没有解决方案:-(
标签: next.js aws-amplify aws-cdk