我正在 Zeit Now 上从 Express 迁移到无服务器功能。
Stripe webhook 文档要求提供原始正文请求,使用 Express 时我可以通过 bodyParser 获取它,但是它如何在无服务器功能上工作?如何以字符串格式接收正文以验证条带签名?
支持团队将我重定向到这个文档链接,我很困惑,据我所知,我必须传入text/plain请求标头,但我无法控制它,因为 Stripe 是发送 webhook 的那个。
export default async (req, res) => {
let sig = req.headers["stripe-signature"];
let rawBody = req.body;
let event = stripe.webhooks.constructEvent(rawBody, sig, process.env.STRIPE_SIGNING_SECRET);
...
}
Run Code Online (Sandbox Code Playgroud)
在我的函数中,我req.body作为一个对象接收,我该如何解决这个问题?
因此,我基于这个NextJS 示例构建了一个 Next 应用程序,这意味着我有 GraphQL 路由和一个用于从应用程序中的 API 获取数据的 Apollo 服务器。该示例展示了如何在 getStaticProps() 中获取,这对我来说效果很好,但我需要实现 getServerSideProps(),因为提供的内容取决于 URL 查询和参数,最多有 6000 个不同的 URL,因此我无法使用 getStaticPaths()。该代码在开发模式下工作完全正常...但是,当部署到 Vercel 时,它在开始时工作,有时在稍后工作,但 95% 的时间在页面上显示 504 BAD GATEWAY 错误。
[s]/[v].tsx 的代码:https://pastecord.com/uwojuzudaw.typescript
apollo server-side-rendering next.js vercel getserversideprops
我加载 GraphQL 架构,如下所示:
const schema = loadSchemaSync('./src/graphql/server/schema/*.gql', {
loaders: [new GraphQLFileLoader()],
})
Run Code Online (Sandbox Code Playgroud)
这在本地工作正常,但是,当部署到 vercel 时,我收到错误:
Unable to find any GraphQL type definitions for the following pointers:
- ./src/graphql/server/schema/*.gql
Run Code Online (Sandbox Code Playgroud)
我认为这是因为 vercel 在构建后删除了相关文件?
我使用 Vercel 文档中提供的示例,每 15 秒从 MongoDB 获取一次数据,但不幸的是该函数不起作用。我应该怎么做才能使其按预期工作?
export async function getStaticProps() {
const allData = getSortedData();
const client = await clientPromise;
const isConnected = await client.isConnected();
const alerts = await client.db()
.collection("alerts")
.find({})
.limit(6)
.toArray();
const alertsData = JSON.parse(JSON.stringify(alerts));
return {
props: {
allData,
isConnected,
alertsData
},
revalidate: 15,
};
}
Run Code Online (Sandbox Code Playgroud) npm当我尝试使用或工作区将现有 Nextjs 应用程序转换为单一存储库时,我遇到了 Vercel 部署问题yarn。更改为 monorepo 后,我的构建由于包Not found问题而失败。
您可以在 GitHub 上的monorepo-testing分支中查看完整的存储库。
我基本上有两个 npm 包:
\nproposals.es:这个包是实际的 Next.js 应用程序(位于./website文件夹中)@common/components:这个包包含简单的React组件(位于./common/components文件夹中)当前的文件夹结构如下所示:
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 next-env.d.ts\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package-lock.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 common\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 components \n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.ts\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json \n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 website \n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 next.config.js\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\nRun Code Online (Sandbox Code Playgroud)\n为了使应用程序正确安装并在本地成功运行,我npm install --workspaces从根级别运行,然后npm run dev从内部运行website以启动服务器。
我已完成以下步骤来尝试让这个新的 monorepo …
您好,我们面临的问题是想要创建一个动态的下一个配置。当我们不导入任何文件时,这工作正常,但当尝试在 next.config.mjs 中导入常量文件时,事情就会崩溃。
我们使用下一个版本 12.1,以便使用配置文件的 MJS 变体。
常量文件是一个简单的 JS 文件,其中包含一些值来确定我们支持的不同品牌需要使用的区域设置。这些值在多个地方使用,这就是为什么我们不想在这里对这些值进行硬编码。
import { locales } from './src/constants/locales'; // It breaks on this import
const currentPlatform = process.env.NEXT_PUBLIC_PLATFORM;
module.exports = () => ({
i18n: {
localeDetection: false,
...locales[currentPlatform],
},
images: {
domains: [
// Our domains
],
},
async rewrites() {
return [
// Our rewrites
];
},
webpack: (config, { defaultLoaders }) => {
config.module.rules.push(
// Our config
);
return config;
},
});
Run Code Online (Sandbox Code Playgroud)
这是我们尝试启动开发服务器时抛出的错误,表明导入路径错误。(它不是。)
error - Failed to …Run Code Online (Sandbox Code Playgroud) 我的 nextjs 应用程序工作正常,我添加了一些文件来更新我的代码,现在它没有在 vercel 上部署我的应用程序。给出这个错误
我尝试用谷歌搜索错误,但我的情况很独特。
这是 git 存储库 https://github.com/usman-174/google-calendar-frontend
这些是我的 package.json 中的脚本标签
"scripts": {
"dev": "next",
"build": "next build",
"start": "next start",
"export": "next export",
"lint": "next lint",
"lint-fix": "next lint --fix"
},
Run Code Online (Sandbox Code Playgroud)
next.config.js
module.exports = {
distDir: 'build',
}
Run Code Online (Sandbox Code Playgroud) 我使用 chakra-UI 和 Three.js 构建了一个 web3 应用程序。我在网站上添加了元掩码集成,这有助于在智能合约上铸造 NFT。
当我做,
npm run dev
Run Code Online (Sandbox Code Playgroud)
在我的机器上,我的代码运行得非常流畅。我没有看到任何错误,localhost:3000而当我使用 vercel 部署网站时,我一次又一次收到此错误,其中显示Code NOT_FOUND
以下是该错误的屏幕截图:
我通过 VSCode 终端使用以下命令部署了网站
vercel
Run Code Online (Sandbox Code Playgroud)
命令。
我选择了执行此命令后出现的所有内容作为默认值。
单击此处了解有关此错误的更多信息也没有帮助。
我还尝试通过物理访问 vercel 网站并导入 github 存储库来部署它,但这也不起作用。
错误页面 URL 为:- https://minting-website-frontend.vercel.app/
谁能帮我克服这个错误,我被困在这里这么久了
我正在尝试在 Vercel 上部署一个使用 firebase-admin 的 NEXT JS 应用程序。
\nimport * as firebaseAdmin from \'firebase-admin\';\nimport firebase from \'firebase/app\';\n\nif (!firebaseAdmin.apps.length) {\n firebaseAdmin.initializeApp({\n credential: firebaseAdmin.credential.cert({\n privateKey: process.env.NEXT_PUBLIC_FIREBASE_PRIVATE_KEY,\n\n clientEmail: process.env.NEXT_PUBLIC_FIREBASE_CLIENT_EMAIL,\n\n projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,\n }),\n\n databaseURL: process.env.NEXT_PUBLIC_FIREBASE_DATABASE_URL,\n });\n}\nRun Code Online (Sandbox Code Playgroud)\n当我将其部署到 vercel 时,环境变量如下:
\nNEXT_PUBLIC_FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\\n....\\n-----END PRIVATE KEY-----\\n"\nRun Code Online (Sandbox Code Playgroud)\n\n我收到此错误消息。
\nNEXT_PUBLIC_FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\\n....\\n-----END PRIVATE KEY-----\\n"\nRun Code Online (Sandbox Code Playgroud)\n但是npm run build在本地运行构建没有错误。
.env.local\ninfo - Linting and checking validity of types \ninfo - Creating an optimized production build \ninfo - Compiled successfully\ninfo - Collecting …Run Code Online (Sandbox Code Playgroud) 突然我的中间件在部署中停止工作。错误是:
> Build error occurred
NestedMiddlewareError: Nested Middleware is not allowed, found:
pages/_middleware
Please move your code to a single file at /middleware instead.
Run Code Online (Sandbox Code Playgroud)
Vercel 声明是:例如,pages/about/_middleware.ts 中的中间件可以将逻辑移动到存储库根目录中的 /middleware.ts。然后,可以使用条件语句仅在与 about/* 路径匹配时运行中间件:
当我使用pages/_middleware.ts运行本地构建时,它完成时没有错误,就像今天在生产中所做的那样。如果我将其更改为本地的pages/middleware.ts,则会失败:
./pages/middleware.ts
2:1 Error: next/server should not be imported outside of pages/_middleware.js. See: https://nextjs.org/docs/messages/no-server-import-in-page @next/next/no-server-import-in-page
Run Code Online (Sandbox Code Playgroud)
中间件文件:
import { getToken } from "next-auth/jwt";
import { NextRequest, NextResponse } from "next/server";
export async function middleware(req: NextRequest, res: NextResponse) {
if (req.nextUrl.pathname === "/") {
const session = await getToken({
req,
secret: process.env.JWT_SECRET, …Run Code Online (Sandbox Code Playgroud) vercel ×10
next.js ×8
reactjs ×5
javascript ×3
deployment ×2
node.js ×2
apollo ×1
config ×1
firebase ×1
graphql ×1
mongodb ×1
server ×1
serverless ×1