webpack升级后找不到命名空间NodeJS
Posted
技术标签:
【中文标题】webpack升级后找不到命名空间NodeJS【英文标题】:Cannot find namespace NodeJS after webpack upgrade 【发布时间】:2017-08-13 22:27:53 【问题描述】:我有使用 WebPack 构建的 Angular2 应用程序。我将 WebPack 从 v1.8 升级到 v2,一切似乎都运行良好。唯一的问题是旧代码有以下内容:
import Timer = NodeJS.Timer;
....
apptInterval: Timer;
....
this.apptInterval = setInterval(() => ... , 1000);
升级后出现错误:TS2503: Cannot find namespace 'NodeJS'.
tsconfig.json 看起来像这样:
"compilerOptions":
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["es2015", "dom"],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true
Angular/Webpack 的文档不再有 typings.json
;但是,即使我从 Webpack 1 目录复制,也无济于事。内容是typings.json是
"globalDependencies":
"jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
"node": "registry:dt/node"
有趣的是,如果我删除对 NodeJS 的引用,一切正常。像这样:
apptInterval: any;
....
this.apptInterval = setInterval(() => ... , 1000);
如果我在 F12 调试器下查看,apptInterval 的类型是ZoneTask
。我确信有一种方法可以使它成为强类型,但它让我无法理解。我发现的唯一建议是运行typings install dt~node --global --save-dev
(它本质上会更新typings.json,但没有帮助。
【问题讨论】:
【参考方案1】:对于 TypeScript@2.0+,使用 @types
:
npm install -D @types/node @types/jasmine
如果您仍想继续使用 typings
,请将 typings/index.d.ts
包含到您的 tsconfig.json 中:
"include": [ // or "files"
"typings/index.d.ts"
]
【讨论】:
不幸的是,这两个选项都没有任何区别。 在 VSCode 中打开你的代码,查看智能感知中是否存在NodeJS
。它应该在那里你有正确的设置。
谢谢!我忘记在 include
数组中的 tsconfig.app.json 中包含 "**/*.d.ts"
。现在我的自定义类型定义再次起作用了。【参考方案2】:
如果您的工作目录中还有 tsconfig.app.json,请尝试将属性 node 添加到 types 字段。喜欢:
"extends": "../tsconfig.json",
"compilerOptions":
"outDir": "../out-tsc/app",
"module": "es6",
"baseUrl": "",
"types": ["node"] --> ADD THIS
,
"exclude": [
"test.ts",
"**/*.spec.ts"
]
【讨论】:
@LuigiRubino 很高兴我能帮上忙! 它也对我有用!注意:它也解决了之前的 webpack 编译错误:Cannot find name 'require'。 (错误 ts2304)【参考方案3】:向类型添加节点对我不起作用,"types": ["node"]
但向类型根添加节点却可以
"compilerOptions":
...
"typeRoots": [
"node_modules/@types"
]
【讨论】:
【参考方案4】:我正在运行 Angular 12 并且启用了严格模式,我必须将 Fzum 和 johnny S 的答案都添加到我的 tsconfig.app.json 中。唯一一次没有在控制台中抛出错误是当我同时拥有两者时。
我的 tsconfig.app.json 看起来像这样:
"compilerOptions":
...
"types": ["node"],
"typeRoots": [
"node_modules/@types"
]
很抱歉将其作为单独的答案,我还没有足够的声誉来发表评论
【讨论】:
以上是关于webpack升级后找不到命名空间NodeJS的主要内容,如果未能解决你的问题,请参考以下文章
升级到 Visual Studio 2017 后找不到 Microsoft.VisualStudio.TestTools.LoadTesting
在Composer更新后找不到Symfony AbstractController