NodeJS 如何在gitlab CI上使用dotenv?

vmdwslir  于 12个月前  发布在  Node.js
关注(0)|答案(1)|浏览(91)

我在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
我怎样才能排除根本原因呢?

xytpbqjk

xytpbqjk1#

问题出在Gitlab页面的配置上。必须选择:

使用唯一域名

并使用生成的URL作为SITE_URL,而不是子域。

相关问题