如果未提供值,EJS 不会出错

问题描述 投票:0回答:1

我正在尝试将一些 EJS 添加到 yaml 文件中。如果没有向 EJS 提供变量但不知道如何提供,我想使用默认值。这里有两次尝试,都失败并显示以下错误消息:

postgres_credentials_secret_name is not defined
    at eval (eval at compile (/Users/paymahn/code/goldsky/strick/infra/node_modules/ejs/lib/ejs.js:662:12), <anonymous>:107:17)
    at anonymous (/Users/paymahn/code/goldsky/strick/infra/node_modules/ejs/lib/ejs.js:692:17)
    at Object.exports.render (/Users/paymahn/code/goldsky/strick/infra/node_modules/ejs/lib/ejs.js:423:37)
    at Immediate.run (/Users/paymahn/code/goldsky/strick/infra/node_modules/ejs/bin/cli.js:201:20)
    at processImmediate (node:internal/timers:466:21) {
  path: ''
}

尝试1:

                  <% if(postgres_credentials_secret_name) { %>
                  name: <%- postgres_credentials_secret_name %>
                  <% } else { %>
                  name: graph-node-postgres-credentials
                  <% } %>

尝试2:

                  name: <%- postgres_credentials_secret_name || 'graph-node-postgres-credentials' %>

如果没有提供变量,我怎样才能让 EJS 不抱怨,因为我在模板逻辑本身中提供了一个默认值。

javascript ejs
1个回答
0
投票

看起来你没有从你的服务器发送

postgres_credentials_secret_name
所以它没有在模板中定义。你可以用
typeof postgres_credentials_secret_name
看看是不是
undefined
。或者你可以使用
locals.postgres_credentials_secret_name
这篇文章

console.log(typeof postgres_credentials_secret_name)
console.log(typeof postgres_credentials_secret_name === 'undefined')
console.log(postgres_credentials_secret_name)

name: <%- typeof postgres_credentials_secret_name !== 'undefined' ? postgres_credentials_secret_name : 'graph-node-postgres-credentials' %>

或者你可以使用

name: <%- locals.postgres_credentials_secret_name ? postgres_credentials_secret_name : 'graph-node-postgres-credentials' %>

甚至

name: <%- locals.postgres_credentials_secret_name || 'graph-node-postgres-credentials' %>

但是,您可以发送类似空字符串的内容,然后您的方法就会起作用

© www.soinside.com 2019 - 2024. All rights reserved.