我正在尝试制作一个多语言网站,但遇到了一些问题。
预期行为:
语言自动更改取决于浏览器语言
用户可以切换语言
我看到gatsby-plugin-i18n并遵循了如何使用它的建议,但我的问题是我通过 Netlify CMS 自动创建页面并且无法根据需要获得正确的文件名:page.lang.md
我正在获取page-lang.md.
我想知道是否有人已经有了工作方法,或者可以告诉我我做错了什么,可能gatsby-plugin-i18n根本不适合这个堆栈
提前致谢
我正在创建一个使用反应路由器的反应应用程序。我正在使用路由器来匹配路径,:/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
我该怎么做才能解决这个问题?
我用 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 中设置重定向的提示。
从 Remark 迁移到 MDX 后,我在 Netlify 上的构建失败了。
\n尝试构建时出现此错误:
\n10: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\nRun Code Online (Sandbox Code Playgroud)\nnode -v然而,当我在终端中运行时,它显示 v17.2.0。
我认为迁移后发生这种情况并非巧合。问题可能是因为我的节点模块文件夹吗?或者我的 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) 我正在使用 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) 我正在尝试为我的代码中不需要的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到"构建环境变量",并且还直接在构建命令中设置它,但没有成功.
知道可能是什么问题吗?
我对文档有点困惑,不确定我正在尝试做的事情是否可行。
目标:
例如:
mysite.com/posts/2我想我可以创建一个名为 html 的骨架文件posts.html,netlify 将所有posts/<id>请求重定向到该posts.html文件,然后该文件将显示骨架并通过 API 动态加载必要的数据。
我认为如果没有这个 netlify hack,根据他们的文档,我的静态导出 + 动态路由的工作链接的目标是不可能使用 next.js 的,因为fallback: true只有在使用 SSR 时才有可能。
问题:如何实现我梦想中的静态 nextjs 导出 + 动态路由的工作链接?
编辑:我刚刚发现了Redirects。它们可能是我问题的解决方案。
使用 Next.js、next-on-netlify 构建,相关页面使用 getServerSideProps。
\n平均超过 10 次页面加载:
\n我\xe2\x80\x99ve 分析了从 getServerSideProps 调用到页面函数返回的时间,并且在所有环境中,该时间可靠地花费 < 1 秒。
\n我\xe2\x80\x99ve也尝试删除页面中的所有内容和道具中的请求,并且对Netlify功能没有任何影响。
\n如何分析瓶颈所在?这可能是 Netlify 的问题吗?
\n我目前正在尝试在 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) 我找不到任何方法如何使用无服务器 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)
但不幸的是,我能够通过每个域发送它,这并不安全,因为有些人可以将垃圾邮件发送到该收件箱。
你能跟我举个例子吗?先感谢您
netlify ×10
gatsby ×3
node.js ×3
reactjs ×3
graphql ×2
javascript ×2
netlify-cms ×2
next.js ×2
react-router ×2
aws-lambda ×1
cors ×1
deployment ×1
nestjs ×1
netlify-cli ×1
serverless ×1
vercel ×1
vite ×1
webpack ×1