404使用Angular2,angular2-websocket和typings

时间:2016-03-14 17:11:03

标签: websocket angular systemjs

...
import {$WebSocket} from "angular2-websocket/angular2-websocket";

@Injectable()
export class DeviceService {

    private logger:Logger;
    private ws:$WebSocket;

    constructor(
        private _logger: Logger
    ) {
        this.logger=_logger;
        this.ws = new $WebSocket("ws://nodered-iot.net/ws/devices");
    }

    private _devices:Device[] = [];

    getDevices() {

        this.ws.send("Hello");
   ...

在我的浏览器上,我得到了这个:

获取http://localhost:1880/node_modules/angular2-websocket/angular2-websocket 404(未找到)我 @ system.src.js:4597(匿名函数) http://localhost:1880/node_modules/angular2-websocket/angular2-websocket(...)

我在index.html上使用这个定义

<!-- 2. Configure SystemJS -->
<script>
    System.config({
        transpiler: 'typescript',
        typescriptOptions: { emitDecoratorMetadata: true },
        packages: {'app': {defaultExtension: 'ts'}},
        map: {
            'angular2-websocket': 'node_modules/angular2-websocket'
        }
    });
    System.import('app/main')
            .then(null, console.error.bind(console));
</script>

******编辑*******

我成功找到了FIX:

        System.config({             transpiler:'typescript',             typescriptOptions:{emitDecoratorMetadata:true},             包裹:{                 'app':{defaultExtension:'ts'},                 'js':{defaultExtension:'ts'}},             地图:{                 'angular2-websocket':'js'             }         });         System.import( '应用程序/主')                 .then(null,console.error.bind(console));     

我不得不将node_module中的文件复制到新的js文件夹中。这不是很好,但如果这些文件不在nodeJs的'public'文件夹中,我不知道如何在客户端提供这个:/

2 个答案:

答案 0 :(得分:1)

我认为这是一个SystemJS配置。你试试这个:

<script>
  System.config({
    map: {
      'angular2-websocket': 'node_modules/angular2-websocket'
    },
    packages: {
      (...)
    }
  });
</script>

答案 1 :(得分:0)

Anoher解决方案是更改NodeRed的Root,而不是指向&#39; public&#39;文件夹:

// Serve up the welcome page
httpStatic: path.join(__dirname,"/"),

然后我们可以在index.html上声明:

<script src="/node_modules/angular2-websocket/angular2-websocket.js"></script>