问题描述
我最近将__DEV__
添加到了NodeJS项目中的某些TypeScript文件中。在VSCode中,这没有标记为错误。
但是,当我运行项目时,我立即收到错误消息
error TS2304: Cannot find name '__DEV__'.
我尝试将/* global __DEV__ */
添加到文件顶部。错误仍然存在。
我尝试在global.d.ts
中添加一个declare var __DEV__: boolean;
文件。错误仍然存在。
这是我的tsconfig:
{
"compilerOptions": {
"target": "es6","lib": [
"es2017","es2015","dom","es6"
],"module": "commonjs","outDir": "./","sourceMap": true,"esModuleInterop": true,"strict": false,"resolveJsonModule": true,"downlevelIteration": true
},"include": [
"**.ts"
],"exclude": [
"node_modules"
]
}
编辑:该项目通过VSCode中的launch.json
文件启动。这是它的内容:
{
"version": "0.2.0","configurations": [
{
"name": "Current TS File","type": "node","request": "launch","args": ["${relativeFile}"],"runtimeArgs": ["--nolazy","-r","ts-node/register","--max-old-space-size=32768"],"cwd": "${workspaceRoot}","protocol": "inspector","internalConsoleOptions": "openOnSessionStart","console": "integratedTerminal","stopOnEntry": false,"skipFiles": [
"${workspaceFolder}/node_modules/**/*.js","<node_internals/**/*.js"
]
}
]
}
解决方法
在回购https://github.com/TypeStrong/ts-node#help-my-types-are-missing上正式表达了有关打字的警告。
总结一下,您可以通过以下方法解决问题:
像这样为{
textPayload: "ERROR: logging before flag.Parse: E0907 16:33:58.813216 1 nanny_lib.go:128] Get https://10.0.0.1:443/api/v1/nodes?resourceVersion=0: http2: no cached connection was available"
insertId: "zzz"
resource: {
type: "k8s_container"
labels: {
project_id: "zzz"
namespace_name: "kube-system"
container_name: "metrics-server-nanny"
pod_name: "metrics-server-v0.3.6-7b7d6c7576-jksst"
cluster_name: "zzz"
location: "zzz"
}
}
timestamp: "2020-09-07T16:33:58.813411604Z"
severity: "ERROR"
labels: {
gke.googleapis.com/log_type: "system"
k8s-pod/version: "v0.3.6"
k8s-pod/k8s-app: "metrics-server"
k8s-pod/pod-template-hash: "7b7d6c7576"
}
logName: "projects/zzz/logs/stderr"
receiveTimestamp: "2020-09-07T16:34:05.273766386Z"
}
目录创建结构:
typings
- tsconfig.json
- typings
-- global
--- index.d.ts
是您的内容
index.d.ts
然后将declare var __DEV__: boolean
添加到您的typeRoots
:
tsconfig.json
,
最后,唯一有效的方法是将int y = 42;
x = &y;
变量移至__DEV__
:
eval
不太理想,但是确实可以。
const isInDebugMode = () => {
return eval('__DEV__');
}
中的声明仅解决了设计时错误。运行时错误不受它的影响。