2017-03-22 27 views
6

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

Trả lời

2

Đối [email protected]+, sử dụng @types:.

npm install -D @types/node @types/jasmine 

Nếu bạn vẫn muốn để treo trên để typings, bao gồm typings/index.d.ts để tsconfig.json của bạn:

{ 
    "include": [ // or "files" 
    "typings/index.d.ts" 
    ] 
} 
+0

Thật không may, không có sự lựa chọn nào khác. – Felix

+0

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

11

Nếu bạn cũng có tsconfig.app.json trong thư mục làm việc của bạn, hãy cố gắng thêm một ttribute nút vào trường loại. Giống như:

{ 
    "extends": "../tsconfig.json", 
    "compilerOptions": { 
    "outDir": "../out-tsc/app", 
    "module": "es6", 
    "baseUrl": "", 
    "types": ["node"] --> ADD THIS 
    }, 
    "exclude": [ 
    "test.ts", 
    "**/*.spec.ts" 
    ] 
} 
+0

Nó làm việc cho tôi. Cảm ơn! –

+0

@LuigiRubino Vui vì tôi có thể giúp! – Fzum

Các vấn đề liên quan