我正在寻找一种方法来定义 netlify 上的两个站点构建,它们来自同一个存储库,使用单个 common netlify.toml. 可以这样做吗?
我有一个名为hugo-dream-plus的 GitHub 存储库,我在 netlify 上配置了两个网站构建,即dream-plus-posts和dream-plus-cards。这两个构建共享相同的环境变量和大部分配置,除了构建命令:
hugo --config cards.toml #For dream-plus-cards
hugo --config posts.toml #For dream-plus-posts
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以让我创建一个通用netlify.toml文件,因为这两个站点的两个版本的存储库都是相同的。
我已经使用Web UI来单独配置每个构建,但是修改每个构建都相当麻烦,这就是为什么我更喜欢上面的场景。
我计划做的是在两个构建之间共享所有配置,除了构建命令之外,该命令将单独定义,如上所示。
我今天早上从 github 存储库在 Netifly 上部署了一个 React 网站。
然后我做了一些更改,将它们推送到 github,并在 Netifly 上触发了一个新的部署。现在该网站是一个空白页面。在控制台中,我收到以下消息:
加载资源失败:服务器响应状态为 404()
所以我在 Netifly 上创建了一个新项目,使用相同的存储库。问题依然存在。这是 Netifly 的临时问题吗?如果没有,我该如何解决?
我有一个 Netlify 部署的应用程序,它带有一个 lambda 函数,它调用外部 API 来获取一些数据。外部API数据每天更新一次,我希望lambda响应在Netlify的CDN中缓存24小时,所以我不调用lambda函数,从而调用外部API,一天不止一次.
为了测试这一点,我编写了一个简单的 lambda 函数:
exports.handler = function(event, context, callback) {
callback(null, {
statusCode: 200,
body: new Date().toString(),
headers: {
'Cache-Control': 'public, s-maxage=86400',
},
});
};
Run Code Online (Sandbox Code Playgroud)
当 10 秒后第二次调用端点时,我确实在响应主体中获得了相同的时间,表明响应确实被缓存了。但是当从两个不同的设备(我的电脑和我的 4G 手机,所以不同的 IP 和 ISP)调用它时,我得到了不同的日期,好像每个设备都提供了不同的缓存响应,我可以在 Netlify 的仪表板中看到 lambda 是调用了两次。
关于 Netlify 的 CDN 是如何工作的,我有什么不明白的地方吗?有没有办法实现我正在尝试做的事情?
服务器.js
const express = require('express');
const favicon = require('express-favicon');
const app = express();
app.use(favicon(__dirname + '/build/favicon.ico'));
app.use(express.static(__dirname));
app.use(express.static(path.join(__dirname,'build')));
app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
Run Code Online (Sandbox Code Playgroud)
包.json
"scripts" : {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
}
Run Code Online (Sandbox Code Playgroud)
不知道如何将 ejs 视图引擎与 netlify 一起使用
我尝试这样做app.set('view engine', 'ejs'),但没有成功。
const express = require('express');
const path = require('path');
const serverless = require('serverless-http');
const app = express();
const router = express.Router();
// app.set('view engine', 'ejs');
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use('/assets', express.static(path.join(__dirname, 'assets')));
router.get('/', (req, res) => {
res.render('home');
});
module.exports = app;
module.exports.handler = serverless(app);
Run Code Online (Sandbox Code Playgroud)
我没有得到任何输出。
我正在使用firebase-admin检索数据并使用NetlifyLambda 函数来调用服务。基本上就是这样。
这是我的代码:
exports.handler = (event, context, callback) => {
const { id = "toronto" } = event.queryStringParameters;
const cityRefs = dbInstance.collection("cities");
console.log("req.params.id", id);
if (id === "mumbai") {
console.log("in here", id);
let cityRef = cityRefs.doc("id1");
return cityRef
.get()
.then(doc => {
if (!doc.exists) {
console.log("No such document!");
} else {
console.log("Document data:", doc.data());
callback(null, {
statusCode: 200,
body: doc.data()
});
}
})
.catch(err => {
console.log("Error getting document", err);
callback(err);
});
}
Run Code Online (Sandbox Code Playgroud)
}
我不断收到以下错误。我不确定我做错了什么。
函数调用失败:类型错误 …
我无法解决在 netlify 上构建 gatsby 站点的问题。几天以来,我收到以下错误:
3:17:52 PM: error UNHANDLED EXCEPTION Callback was already called.
3:17:52 PM:
3:17:52 PM: Error: Callback was already called.
3:17:52 PM:
3:17:52 PM: - async.js:16 throwError
3:17:52 PM: [repo]/[neo-async]/async.js:16:11
3:17:52 PM:
3:17:52 PM: - async.js:2818
3:17:52 PM: [repo]/[neo-async]/async.js:2818:7
3:17:52 PM:
3:17:52 PM: - next_tick.js:132 _combinedTickCallback
3:17:52 PM: internal/process/next_tick.js:132:7
3:17:52 PM:
3:17:52 PM: - next_tick.js:181 process._tickCallback
3:17:52 PM: internal/process/next_tick.js:181:clock9
Run Code Online (Sandbox Code Playgroud)
包.json
{
"name": "gatsby-starter-netlify-cms",
"description": "Example Gatsby, and Netlify CMS project",
"version": "1.1.3",
"author": "Austin Green",
"dependencies": { …Run Code Online (Sandbox Code Playgroud) 我可以在本地开发服务器上完美地运行我的react-app(使用create-react-app样板),但是当我使用它进行编译npm run build然后使用服务器运行它时(我尝试了netlify和本地http服务器),我只收到此错误并且页面未加载:
classCallCheck.js:1 Uncaught RangeError: Maximum call stack size exceeded
at Object.a (classCallCheck.js:1)
at e (Object.js:6)
at e (Object.js:6)
at e (Object.js:6)
at e (Object.js:6)
at e (Object.js:6)
at e (Object.js:6)
at e (Object.js:6)
at e (Object.js:6)
at e (Object.js:6)
Run Code Online (Sandbox Code Playgroud)
文件 Object.js 位于 src/Model/Objects/Object.js 下。
GitHub: https: //github.com/Tracer1337/DynaSys
部署在 Netlify 上:https://youthful-mestorf-9e0ba8.netlify.com/
我做错了什么?
我一直在按照官方视频教程学习如何使用 tailwind css,我只是想尝试将站点示例部署到 Netlify,看看它是否可以使用拖放功能工作。
这意味着获取整个项目文件夹并将其转储到 netlify 中。这通常适用于普通 html css js 网站,但由于某种原因我收到错误
Page Not Found Looks like you've followed a broken link or entered a URL that doesn't exist on this site.
该项目的结构如下:
我究竟做错了什么?在 build 文件夹中还有另一个名为 tailwind.css 的文件
在 Netlify 构建中调试一个看似无关的错误时,这突然发生。我本地没有这个问题。我已经清除了我的缓存,删除了我的包锁和节点模块文件夹并更新了所有内容,并在 Netlify 上运行了一个没有缓存的构建。我也检查了文件/文件夹名称是否区分大小写。会是什么呢?
组件使用的模板之一:
import React, { Component } from 'react'
import GridTemplate from '../components/GridTemplate/GridTemplate.js'
import { graphql } from 'gatsby'
...
class Mediums extends Component {
render() {
let allTitles = []
this.props.data.allMarkdownRemark.edges.forEach( post => {
allTitles.push(post.node.frontmatter.title)
})
return (
<div style={{position: "absolute", width: "100%", height: "100%", overflow: "hidden", overflowY: "scroll"}}>
<HeaderMeta subTitle={this.props.pageContext.medium} itemGroup={this.props.data.allMarkdownRemark}/>
<GridTemplate
data={this.props.data.allMarkdownRemark.edges}
title={this.props.pageContext.medium}
pastUrl={this.props.location.pathname}
/>
</div>
)
}
}
export default Mediums
Run Code Online (Sandbox Code Playgroud)
GridTemplate 组件:
import React, { Component } from 'react';
import S …Run Code Online (Sandbox Code Playgroud) netlify ×10
reactjs ×4
javascript ×3
gatsby ×2
node.js ×2
deployment ×1
express ×1
firebase ×1
git ×1
github ×1
http ×1
hugo ×1
lambda ×1
netlify-cms ×1
npm ×1
tailwind-css ×1
web ×1
webpack ×1