Tôi có ứng dụng Angular2 được xây dựng với WebPack. Tôi đã nâng cấp WebPack từ v1.8 lên v2 và mọi thứ có vẻ hoạt động tốt. Vấn đề duy nhất là các mã cũ có sau đây:Không thể tìm thấy không gian tên NodeJS sau khi nâng cấp webpack
import Timer = NodeJS.Timer;
....
apptInterval: Timer;
....
this.apptInterval = setInterval(() => { ... }, 1000);
Sau khi nâng cấp này mang lại cho tôi một lỗi: TS2503: Cannot find namespace 'NodeJS'.
tsconfig.json trông như thế này:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["es2015", "dom"],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true
}
}
Các tài liệu cho Angular/Webpack không còn có typings.json
; tuy nhiên, ngay cả khi tôi sao chép từ thư mục Webpack 1, nó cũng không giúp được gì. Nội dung là typings.json là
{
"globalDependencies": {
"jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
"node": "registry:dt/node"
}
}
Thú vị là nếu tôi xóa tham chiếu đến NodeJS, mọi thứ đều hoạt động tốt. Như thế này:
apptInterval: any;
....
this.apptInterval = setInterval(() => { ... }, 1000);
Nếu tôi nhìn dưới trình gỡ rối F12, loại apptInterval là ZoneTask
. Tôi chắc chắn có một cách để làm cho nó mạnh mẽ đánh máy, nhưng nó thoát khỏi tôi. Các gợi ý duy nhất tôi thấy được để chạy typings install dt~node --global --save-dev
(trong đó chủ yếu cập nhật typings.json, nhưng không giúp
Thật không may, không có sự lựa chọn nào khác. – Felix
Mở mã của bạn trong VSCode và xem liệu 'NodeJS' có tồn tại trong intelliSense hay không. Nó sẽ có đó là bạn có những thứ thiết lập correclty. – unional