我用谷歌搜索了一下,但找不到任何与此相关的内容,可能是因为我不太确定导致问题的原因。
我想在 node.js 全局对象上设置一个全局值。只是一个简单的字符串
global.appRoot = path.resolve(__dirname)
由于我使用的是 Typescript,我的编辑器(Visual Studio Code)警告我该属性在 Global 类型上不存在,这是有道理的。
我继续在我的根文件夹中创建了一个
global.d.ts
declare namespace NodeJS {
export interface Global {
appRoot: string;
}
}
这工作得很好,编辑器告诉我这很好,但仍然会破坏其他随机属性,所以一切仍然有效。
然而,这就是问题所在。当我运行以下命令来检查并修复我的代码时,它似乎无法识别我的声明文件
global.d.ts
,并且崩溃并显示 VS Code 之前给我的相同错误消息。 src/app.ts:15:8 - error TS2339: Property 'appRoot' does not exist on type 'Global & typeof globalThis'.
eslint -c ./.eslintrc.js --ext .ts,.js --fix ./src/**/*.{js,ts}`
这些是我的配置文件
.eslintrc.js
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
env: {
node: true,
},
plugins: [
'@typescript-eslint',
],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
],
rules: {
...
},
};
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true,
"moduleResolution": "node",
"baseUrl": "./src",
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modues"
]
}
这个问题似乎混淆了两个单独的工具:
tsc
) 上运行并集成到 VS Code 等编辑器中。
tsconfig.json
文件进行配置。.eslintrc.js
或 eslint.config.js
的文件。这个问题使用了单词 “lint” 但 ESLint 在这里不相关。有问题的错误是 TypeScript 类型检查投诉。
这里的问题可能是
tsconfig.json
指定了 include: ["src/**/*.ts"]
但 global.d.ts
文件位于该目录之外。尝试将其移动为src/global.d.ts
。如果失败,请在 TSConfig 的 include
中显式包含全局类型的路径。