我使用angular-cli來生成一個新項目。現在我想socketJs添加到項目,但不斷收到錯誤在瀏覽器控制檯:如何將SockJS添加到Angular 2項目中?
GET http://localhost:4200/url-parse 404 (Not Found)
GET http://localhost:4200/inherits 404 (Not Found)
Unhandled Promise rejection: Error: XHR error (404 Not Found) loading http://localhost:4200/url-parse
at XMLHttpRequest.wrapFn [as _onreadystatechange] (http://localhost:4200/vendor/zone.js/dist/zone.js:769:30)
at ZoneDelegate.invokeTask (http://localhost:4200/vendor/zone.js/dist/zone.js:356:38)
at Zone.runTask (http://localhost:4200/vendor/zone.js/dist/zone.js:256:48)
at XMLHttpRequest.ZoneTask.invoke (http://localhost:4200/vendor/zone.js/dist/zone.js:423:34)
Error loading http://localhost:4200/url-parse as "url-parse" from http://localhost:4200/vendor/sockjs-client/lib/main.js ; Zone: <root> ; Task: Promise.then ; Value: Error: Error: XHR error (404 Not Found) loading http://localhost:4200/url-parse(…)
Error: Uncaught (in promise): Error: Error: XHR error (404 Not Found) loading http://localhost:4200/url-parse(…)
GET http://localhost:4200/json3 404 (Not Found)
GET http://localhost:4200/debug 404 (Not Found)
GET http://localhost:4200/events 404 (Not Found)
GET http://localhost:4200/eventsource 404 (Not Found)
GET http://localhost:4200/crypto 404 (Not Found)
GET http://localhost:4200/json3 404 (Not Found)
GET http://localhost:4200/url-parse 404 (Not Found)
GET http://localhost:4200/debug 404 (Not Found)
GET http://localhost:4200/inherits 404 (Not Found)
Assertion failed: loading or loaded
GET http://localhost:4200/events 404 (Not Found)
Assertion failed: loading or loaded
GET http://localhost:4200/faye-websocket 404 (Not Found)
Assertion failed: loading or loaded
GET http://localhost:4200/eventsource 404 (Not Found)
Assertion failed: loading or loaded
GET http://localhost:4200/http 404 (Not Found)
GET http://localhost:4200/https 404 (Not Found)
這是我的步驟和配置:
typings install sockjs-client --save --ambient
角CLI-build.js
var Angular2App = require('angular-cli/lib/broccoli/angular2-app');
module.exports = function(defaults) {
return new Angular2App(defaults, {
vendorNpmFiles: [
'systemjs/dist/system-polyfills.js',
'systemjs/dist/system.src.js',
'zone.js/dist/**/*.+(js|js.map)',
'es6-shim/es6-shim.js',
'reflect-metadata/**/*.+(ts|js|js.map)',
'rxjs/**/*.+(js|js.map)',
'@angular/**/*.+(js|js.map)',
'sockjs-client/**/*.+(js)'
]
});
};
系統config.ts
/** Map relative paths to URLs. */
const map: any = {
'sockjs-client': 'vendor/sockjs-client/lib/entry.js'
};
/** User packages configuration. */
const packages: any = {
'vendor/sockjs-client/lib': {
'format': 'cjs',
'defaultExtension': 'js'
}
};
我的定製服務類:
import { Injectable } from '@angular/core';
import * as SockJS from 'sockjs-client';
import BaseEvent = __SockJSClient.BaseEvent;
import SockJSClass = __SockJSClient.SockJSClass;
@Injectable()
export class WebsocketService {
private sockJs: SockJSClass;
constructor() {
console.log('constuctor');
this.sockJs = new SockJS('/hello');
}
}
請讓我知道如何解決它,非常感謝!
但是,我可以通過在system-config.ts中逐個添加丟失的lib來消除一些錯誤。但我懷疑這是正確的方法。
const map: any = {
'sockjs-client': 'vendor/sockjs-client/lib/entry.js',
'json3': 'vendor/sockjs-client/node_modules/json3/lib/json3.js',
'url-parse': 'vendor/sockjs-client/node_modules/url-parse/index.js',
'inherits': 'vendor/sockjs-client/node_modules/inherits/inherits.js',
'debug': 'vendor/sockjs-client/node_modules/debug/debug.js',
...
};
是否會出現在你的node_module目錄? –
它確實出現。 – janetsmith
@janetsmith你弄明白了嗎? – Birowsky