【发布时间】:2022-08-09 13:29:06
【问题描述】:
所以,我有一个逻辑,可以根据我所在的 NODE_ENV 设置不同的 baseURL。
我的问题是process.env.NODE_ENV 只有两种类型,development 和production,我还想拥有staging 的选项。
所以我试图做的是在我的项目的根文件夹中创建一个名为environment.d.ts 的文件,在里面我做了:
declare namespace NodeJS {
export interface ProcessEnv {
NODE_ENV: \"development\" | \"production\" | \"staging\";
}
}
但是,在尝试使用 staging 时,我仍然遇到错误:
This condition will always return \'false\' since the types \'\"production\"\' and \'\"staging\"\' have no overlap.ts(2367)
export const baseURL =
process.env.NODE_ENV === \"development\"
? \"http://localhost:3000\"
: process.env.NODE_ENV === \"staging\"
? `https://ego-stage.herokuapp.com/`
: process.env.NODE_ENV === \"production\"
? \"https://egolounge.com/\"
: \"http://localhost:3000\";
给我错误的行是我比较NODE_ENV 是否等于staging 的行,因为staging 作为一种类型在NODE_ENV 的默认界面中不存在,所以我需要用我自己的定义来扩展它,但是我创建的定义由于某种原因并没有取代默认的定义,当我推送到服务器时,它没有构建。
-
在这些情况下,它们是什么真的很重要吗?我没有说
string,而是明确说明我想要作为值的字符串,这与问题无关...... -
你在问一个技术问题:让你的条款正确总是很重要。
-
@Mike\'Pomax\'Kamermans 这是 Typescript,不是 Javascript,这是一个
interface不是类或函数,这里没有逻辑||运算符。 -
这就是界面应该是这样的,代码是正确的(就该逻辑而言),问题是我创建的定义没有被识别并且没有取代
process.env.NODE_ENV的默认类型,它只是\"staging\" | \"production\"和为了更清楚地说明我的观点,这是节点类型中内置的默认接口:prnt.sc/4WWMhoIV4CIR 如果我在这里添加| \"staging\",它工作得很好,但它位于node_modules,所以它不会被推送到服务器,这就是为什么我需要扩展它。 -
很公平,但是:don\'t put pictures of code in your post,将文本放入您的代码中。特别是当 TS 错误被标记为您现在没有显示的代码时。
标签: node.js typescript