404 使用 Angular2、angular2-websocket 和类型

Posted

技术标签:

【中文标题】404 使用 Angular2、angular2-websocket 和类型【英文标题】:404 using Angular2, angular2-websocket and typings 【发布时间】:2016-06-29 20:45:24 【问题描述】:
...
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:

系统配置( 转译器:'打字稿', typescriptOptions: emitDecoratorMetadata: true , 包: 'app': defaultExtension: 'ts', 'js': defaultExtension: 'ts' , 地图: 'angular2-websocket':'js' ); System.import('app/main') .then(null, console.error.bind(console));

我不得不将文件从 node_module 复制到一个新的 js 文件夹中。这不是很好,但如果这些文件不在 nodeJs 的“公共”文件夹中,我不知道如何在客户端使用它:/

【问题讨论】:

你是如何包含模块并引用它的?你在用 SystemJS 吗? 是的,我正在使用 SystemJS 另外,如果我将它添加到我的 index.html 中: 然后我得到这个错误:Uncaught TypeError: Unexpected anonymous System.注册电话 【参考方案1】:

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

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

【讨论】:

这不起作用。我还需要在“包”上添加什么内容? 我会尽快回来做新的测试。我的 POC 没有太多空闲时间,而且混合很多东西非常复杂 ^_^【参考方案2】:

另一个解决方案是更改 NodeRed 的根目录,因为它指向“公共”文件夹:

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

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

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

【讨论】:

以上是关于404 使用 Angular2、angular2-websocket 和类型的主要内容,如果未能解决你的问题,请参考以下文章

部署在 Amazon s3 上的 Angular 2 应用程序出现 404 错误

Angular 2:当我通过浏览器刷新时出现 404 错误[重复]

Angular 2:当我通过浏览器刷新时出现 404 错误[重复]

URL 找不到 Angular2 404:http://localhost/WebApi2/api/hero

带有 Auth0 路由错误 404 的 Angular 2

Angular 2如果路径不存在,如何重定向到404或其他路径[重复]