我正在尝试将一些 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 不抱怨,因为我在模板逻辑本身中提供了一个默认值。
看起来你没有从你的服务器发送
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' %>
但是,您可以发送类似空字符串的内容,然后您的方法就会起作用