Jat*_*att 3 javascript node.js typescript ecmascript-6
在以下代码行中:
internalWhiteList = process.env.INTERNAL_IP_WHITELIST.split( ',' )
Run Code Online (Sandbox Code Playgroud)
我收到一个错误说,Object is possibly undefined.使用名为dotenv的模块从位于根目录的文件env中加载变量.process.env.env
我怎么能告诉打字稿,这process不是未定义的?这是我的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"
]
}
Run Code Online (Sandbox Code Playgroud)
Pal*_*leo 10
也许使用非null断言operator(!):
internalWhiteList = process.env.INTERNAL_IP_WHITELIST!.split( ',' )
Run Code Online (Sandbox Code Playgroud)
或者if声明:
if (process.env.INTERNAL_IP_WHITELIST)
internalWhiteList = process.env.INTERNAL_IP_WHITELIST.split( ',' )
Run Code Online (Sandbox Code Playgroud)
这是什么意思???
如果您查看Node的type-defs,您会看到:
export interface ProcessEnv {
[key: string]: string | undefined;
}
Run Code Online (Sandbox Code Playgroud)
这string | undefined意味着INTERNAL_IP_WHITELIST可能是未定义的,在这种情况下undefined.split()是一个错误,所以你需要断言或防止它被定义(如这个答案所示).