...
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");
...
在我的浏览器上我得到了这个:
GET http://localhost:1880/node_modules/angular2-websocket/angular2-websocket 404(未找到)I @ 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},packages:{_ 'app':{defaultExtension:'ts'},_ 'js':{defaultExtension:'ts'}},map:{_ 'angular2-websocket':'js'}}); System.import('app/main').then(null,console.error.bind(console));
我不得不将node_module中的文件复制到新的js文件夹中 . 这不是很好,但如果这些文件不在nodeJs的'public'文件夹中,我不知道如何在客户端提供这个:/ /
2 回答
我认为这是一个SystemJS配置 . 你试试这个:
Anoher解决方案是更改NodeRed的Root,而不是指向'public'文件夹:
然后我们可以在index.html上声明: