【发布时间】:2020-05-18 13:55:12
【问题描述】:
我有一些代码在其中使用typeof window == "undefined" 来检查是否存在浏览器环境。当我使用ts-node 启动这段代码时,我得到了这个:
typings/Console.ts:36:10 - error TS2304: Cannot find name 'window'.
36 typeof window == "undefined"
~~~~~~
AFAIK typeof 是一种可以安全使用未定义变量的运算符,它在浏览器和 NodeJS 环境中都能很好地工作。但就我开始将它与ts-node 一起使用时,它开始抛出。
我的tsconfig.json
{
"compilerOptions": {
"module": "CommonJS",
"target": "es5",
"moduleResolution": "node",
"baseUrl": "src",
"allowSyntheticDefaultImports": true,
"noImplicitAny": true,
"strict": false,
"sourceMap": true,
"traceResolution": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"strictNullChecks": true,
"allowJs": false,
"declaration": false,
"removeComments": true,
"noLib": false,
"preserveConstEnums": true,
"suppressImplicitAnyIndexErrors": true,
"types": [ "node" ],
"lib": [ "es6" ],
"downlevelIteration": true,
"resolveJsonModule": true,
"typeRoots": [
"../node_modules/@types"
]
}
}
那么,有什么诀窍? 提前致谢!
【问题讨论】:
-
你可以试试 typeof (window || undefined) == "undefined"
-
尝试在 tsconfig "DOM" 中添加到 lib
-
@LukaKostic 这无济于事,因为
window仍未定义。 -
@kalit 好吧,不明白为什么,但它有所帮助。看起来更像是一个错误而不是预期的行为。谢谢!发表您的评论作为答案,让我将其标记为正确答案:)
-
@Limbo 但是只定义了检查类型,而不是对象,也许稍后定义了
标签: javascript node.js typescript typeof ts-node