...
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'文件夹中,我不知道如何在客户端提供这个:/
答案 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>