我在Gitlab CI的基础上和Gatsby一起奋斗。我使用.env文件提供变量与SITE_URL。
从我的盖茨比配置
import type { GatsbyConfig } from "gatsby";
const result = require("dotenv").config({
path: `.env.${process.env.NODE_ENV}`,
});
if (result.error) {
console.error(result.error);
}
const config: GatsbyConfig = {
siteMetadata: {
siteUrl: process.env.SITE_URL,
....
这是我如何配置页面作业在管道编辑器
pages:
stage: deploy
needs:
- yarn:install
- test:gatsby
script:
- echo SITE_URL=$SITE_URL >> .env.production
- echo $SITE_URL
- cat .env.production
- ./node_modules/.bin/gatsby build --prefix-paths
artifacts:
paths:
- public
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
从日志来看,.env.生产似乎是正确的
$ echo SITE_URL=$SITE_URL >> .env.production
$ echo $SITE_URL
https://my_www.gitlab.io/my_www-3.0/
$ cat .env.production
SITE_URL=https://my_www.gitlab.io/my_www-3.0/
但这在盖茨比这边行不通:
error The site's gatsby-config failed validation:
"siteMetadata.siteUrl" must be a valid uri
显然,进程.env不包含SITE_URL
我怎样才能排除根本原因呢?
1条答案
按热度按时间xytpbqjk1#
问题出在Gitlab页面的配置上。必须选择:
使用唯一域名
并使用生成的URL作为SITE_URL,而不是子域。