Javascript 如何告诉typescript,该进程不是未定义的?
在以下代码行中:Javascript 如何告诉typescript,该进程不是未定义的?,javascript,node.js,typescript,ecmascript-6,Javascript,Node.js,Typescript,Ecmascript 6,在以下代码行中: internalWhiteList = process.env.INTERNAL_IP_WHITELIST.split( ',' ) 我收到一个错误信息,对象可能未定义env变量使用位于根目录下名为.env文件的模块加载到process.env 我怎么能告诉typescript,进程不是未定义的? 这是我的tsconfig.json: { "compilerOptions": { "target": "esnext", "out
internalWhiteList = process.env.INTERNAL_IP_WHITELIST.split( ',' )
我收到一个错误信息,对象可能未定义env
变量使用位于根目录下名为.env
文件的模块加载到process.env
我怎么能告诉typescript,进程
不是未定义的?
这是我的tsconfig.json
:
{
"compilerOptions": {
"target": "esnext",
"outDir": "../dist",
"allowJs": true,
"module": "commonjs",
"noEmitOnError": false,
"noImplicitAny": false,
"strictNullChecks": true,
"sourceMap": true,
"pretty": false,
"removeComments": true,
"listFiles": false,
"listEmittedFiles": false
},
"exclude": [
"node_modules",
"test/",
"**/*.spec.ts"
]
}
可能有一个(!
):
或者使用if
语句:
if (process.env.INTERNAL_IP_WHITELIST)
internalWhiteList = process.env.INTERNAL_IP_WHITELIST.split( ',' )
这是什么意思
如果查看节点的类型defs,您会看到:
export interface ProcessEnv {
[key: string]: string | undefined;
}
这是因为string | undefined
意味着INTERNAL\u IP\u WHITELIST
可能未定义,在这种情况下undefined.split()
是一个错误,因此您需要断言或防止它未定义(如此答案所示).Compile for node作为目标?@Bergi我正在使用esnext
作为目标进行编译。更新了我的问题。看起来您需要节点键入
@我编辑Jatt以添加链接:。“对象可能未定义”错误与过程无关。但是,process.env.INTERNAL\u IP_WHITELIST
可以是字符串
或未定义
@Jatt我在答案中添加了一个解释(它不适合评论)。你可以随意编辑。
export interface ProcessEnv {
[key: string]: string | undefined;
}