标签: netlify

如何使用 Gatsby + Netlify CMS 正确提供国际化

我正在尝试制作一个多语言网站,但遇到了一些问题。

预期行为:

  1. 语言自动更改取决于浏览器语言

  2. 用户可以切换语言

    示例:https : //tic-tac-toe-ai.surge.sh/

我看到gatsby-plugin-i18n并遵循了如何使用它的建议,但我的问题是我通过 Netlify CMS 自动创建页面并且无法根据需要获得正确的文件名:page.lang.md 我正在获取page-lang.md.

我想知道是否有人已经有了工作方法,或者可以告诉我我做错了什么,可能gatsby-plugin-i18n根本不适合这个堆栈

提前致谢

gatsby netlify netlify-cms

11
推荐指数
1
解决办法
3073
查看次数

使用 react-router-dom 时,Netlify 无法识别 URL 参数

我正在创建一个使用反应路由器的反应应用程序。我正在使用路由器来匹配路径,:/bankName-:credit并且它在本地开发中运行良好。我的应用程序唯一需要的路径是:/bankName-:credit,其他所有路径都会命中404. 但是,当我将此应用程序部署到 netlify 时,默认情况下它会转到/并显示自定义404. 这一切都很好。但是现在如果我尝试去,/hdfc-500那么它会给出一个 netlify not found 消息,说明page not found.

我尝试使用netlify 文档中_redirects提到的方法,但这不起作用。

这是我的路线:-

应用程序.js

<Route path='/:bankCode-:credit' component={NestedRoutes} />
<Route component={NotFound} />
Run Code Online (Sandbox Code Playgroud)

这是我的NestedRoutes组件:-

const NestedRoutes = ({ match }) => (
  <Suspense fallback={<LinearProgress />}>
    <Switch>
      <Route exact path={`${match.path}/sc-generate`} component={SCGenerate} />
      <Route exact path='/:bankCode-:credit' component={Home} />
      <Route component={NotFound} />
    </Switch>
  </Suspense>
)
Run Code Online (Sandbox Code Playgroud)

我在我的_redirects文件中使用以下代码:-

/* /:bankCode-:credit
Run Code Online (Sandbox Code Playgroud)

但它试图完全匹配 /:bankCode-:credit

我该怎么做才能解决这个问题?

deployment reactjs react-router netlify netlify-cli

11
推荐指数
1
解决办法
3243
查看次数

Vite.js React Build 未在 Netlify 和 Vercel 上重定向

我用 vite.js 做了一个 React 构建。在本地主机上进行生产和测试时,一切正常。但是,当我部署到 Netlify 或 vercel 时,无法通过直接输入 URL 来访问我使用 React-router 创建的路由,而只能通过使用应用程序内部的链接从主页(“/”)访问。

如果我单击应用程序中的路线链接,则路线正在工作,但如果我直接输入网址(例如:mypage/about),则会收到 404 错误。

我检查了 vercel 支持,他们说配置中可能缺少重定向,例如默认情况下由 create-react-app 设置的。在CRA中它看起来像这样

{
  "redirects: [
    { "source": "/(.*)", "destination": "/index.html" }
  ]
}
Run Code Online (Sandbox Code Playgroud)

在浏览完 vite.js 文档后,我找不到任何有关如何在 vite 中设置重定向的提示。

reactjs react-router netlify vercel vite

11
推荐指数
1
解决办法
6389
查看次数

Netlify 说,“错误 Gatsby 需要 Node.js 14.15.0 或更高版本(您有 v12.18.0)”——但我有最新的 Node 版本?

从 Remark 迁移到 MDX 后,我在 Netlify 上的构建失败了。

\n

尝试构建时出现此错误:

\n
10:13:28 AM: $ npm run build\n10:13:29 AM: > blog-gatsby@0.1.0 build /opt/build/repo\n10:13:29 AM: > gatsby build\n10:13:30 AM: error Gatsby requires Node.js 14.15.0 or higher (you have v12.18.0).\n10:13:30 AM: Upgrade Node to the latest stable release: https://gatsby.dev/upgrading-node-js\n
Run Code Online (Sandbox Code Playgroud)\n

node -v然而,当我在终端中运行时,它显示 v17.2.0。

\n

我认为迁移后发生这种情况并非巧合。问题可能是因为我的节点模块文件夹吗?或者我的 gatsby-config.js 或 package.json 文件中是否有某些内容需要更改?

\n

我的 package.json 文件:

\n
{\n  "name": "blog-gatsby",\n  "private": true,\n  "description": "A starter for a blog powered by Gatsby and Markdown",\n  "version": "0.1.0",\n  "author": …
Run Code Online (Sandbox Code Playgroud)

node.js gatsby netlify

11
推荐指数
1
解决办法
5256
查看次数

“文件”类型的 GraphQL 错误字段“图像”必须有一个子字段选择。您指的是“image { ... }”吗?

我正在使用 gatsby 和 Netlify CMS 构建一个站点。我使用了 Gatsby Site Starter。

我不断收到“文件”类型的“GraphQL 错误字段”图像,必须选择子字段。您的意思是“图像 { ... }”吗?尝试部署到 Netlify 时出错。一切都在本地主机上完美运行,但图像似乎有些失败。我查看了 Netlify CMS 页面上提供的示例,发现有人具有完全相同的设置,一个列表小部件(充当画廊),里面有一个图像和描述,here

配置文件

backend:
  name: git-gateway
  repo: grantballmer/gatsby-starter-netlify-cms
  branch: master

media_folder: static/img
public_folder: /img

collections:

  - name: "gallery"
    label: "Gallery"
    folder: "src/pages/services"
    create: true
    fields: 
      - { label: "Template Key", name: "templateKey", widget: "hidden", default: "gallery" }
      - {label: "Title", name: "title", widget: "string"}
      - label: "Grid"
        name: "grid"
        widget: "list"
        fields: 
          - {label: "Image", name: "image", widget: "image"}
          - {label: …
Run Code Online (Sandbox Code Playgroud)

graphql gatsby netlify netlify-cms

10
推荐指数
1
解决办法
5213
查看次数

在Netlify中设置环境变量以进行构建

我正在尝试为我的代码中不需要的API密钥设置环境变量.我的源码javascript看起来像这样:

.get(`http://api-url-and-parameters&api-key=${process.env.API_KEY}`)
Run Code Online (Sandbox Code Playgroud)

我正在使用webpack和包dotenv-webpack https://www.npmjs.com/package/dotenv-webpack在一个gitignored .env文件中设置API_KEY,它在我的本地运行正常.我还希望能够在通过Netlify部署时设置该变量,我已经尝试将其添加到GUI到"构建环境变量",并且还直接在构建命令中设置它,但没有成功.

知道可能是什么问题吗?

webpack netlify

9
推荐指数
3
解决办法
5841
查看次数

NextJs:带有动态路由的静态导出

我对文档有点困惑,不确定我正在尝试做的事情是否可行。

目标:

  • 静态导出 NextJS 应用程序并将其托管在 netlify 上
  • 允许用户创建帖子并链接到这些有效的帖子

例如:

  • 用户创建一个id为:2的新帖子
  • 这篇文章应该可以在下面公开访问 mysite.com/posts/2

我想我可以创建一个名为 html 的骨架文件posts.html,netlify 将所有posts/<id>请求重定向到该posts.html文件,然后该文件将显示骨架并通过 API 动态加载必要的数据。

我认为如果没有这个 netlify hack,根据他们的文档,我的静态导出 + 动态路由的工作链接的目标是不可能使用 next.js 的,因为fallback: true只有在使用 SSR 时才有可能。

问题:如何实现我梦想中的静态 nextjs 导出 + 动态路由的工作链接?

编辑:我刚刚发现了Redirects。它们可能是我问题的解决方案。

netlify next.js

9
推荐指数
1
解决办法
4337
查看次数

next-on-netlify 函数部署时超时 &gt; 10 秒,本地渲染时间为 0.3 秒

使用 Next.js、next-on-netlify 构建,相关页面使用 getServerSideProps。

\n

平均超过 10 次页面加载:

\n
    \n
  • 使用yarn dev(Next.js本地开发),完整的请求大约需要1秒。
  • \n
  • 使用 netlify dev,完整请求只需 < 1 秒。
  • \n
  • 在 Lambda 上使用 Netlify 函数,完整请求大约需要 9.5 秒,并且经常超时超过 10 秒。
  • \n
\n

我\xe2\x80\x99ve 分析了从 getServerSideProps 调用到页面函数返回的时间,并且在所有环境中,该时间可靠地花费 < 1 秒。

\n

我\xe2\x80\x99ve也尝试删除页面中的所有内容和道具中的请求,并且对Netlify功能没有任何影响。

\n

如何分析瓶颈所在?这可能是 Netlify 的问题吗?

\n

javascript reactjs aws-lambda netlify next.js

9
推荐指数
0
解决办法
816
查看次数

NestJS Graphql CORS:通过远程主机访问 API 时出现问题,但在本地主机上可用

我目前正在尝试在 Google Cloud Run 上使用 Graphql 部署我的 NestJS 服务器。我还有一个作为客户端使用的 React 应用程序,托管在 Netlify 上。

但是,当我尝试运行此命令时,我在控制台中收到以下 CORS(跨源资源共享)错误:

Access to fetch at 'https://google-cloud.run.app/graphql' from origin 'https://myapp.netlify.app' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
Run Code Online (Sandbox Code Playgroud)

我的 NestJS 应用程序配置如下:

  // {cors: true}
  const app = await NestFactory.create(AppModule);
  app.enableCors({
    origin: …
Run Code Online (Sandbox Code Playgroud)

node.js cors graphql netlify nestjs

9
推荐指数
0
解决办法
4150
查看次数

如何在 Netlify Serverless 功能中设置 CORS

我找不到任何方法如何使用无服务器 netlify 函数设置 CORS。我已经使用这个函数示例来创建我自己的电子邮件表单发件人:

const nodemailer = require('nodemailer');

exports.handler = function(event, context, callback) {
    let transporter = nodemailer.createTransport({
        host: 'smtp.gmail.com',
        port: 465,
        secure: true,
        auth: {
            type: 'OAuth2',
            user: process.env.MAIL_LOGIN,
            clientId: process.env.CLIENT_ID,
            clientSecret: process.env.CLIENT_SECRET,
            refreshToken: process.env.REFRESH_TOKEN,
            accessToken: process.env.ACCESS_TOKEN
        }
    });
    console.log(event.body);

    transporter.sendMail({
        from: process.env.MAIL_LOGIN,
        to: process.env.MAIL_TO,
        subject: process.env.SUBJECT + new Date().toLocaleString(),
        text: event.body
    }, function(error, info) {
        if (error) {
            callback(error);
        } else {
            callback(null, {
                statusCode: 200,
                body: "Ok"
            });
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我能够通过每个域发送它,这并不安全,因为有些人可以将垃圾邮件发送到该收件箱。

你能跟我举个例子吗?先感谢您

javascript node.js netlify serverless

8
推荐指数
1
解决办法
4443
查看次数