簡體   English   中英

用Angular 2 AOT加載socket.io

[英]load socket.io with Angular 2 AOT

我已經使用socket.io在angular2中創建了一個項目,以發出/監聽套接字通信。 一切在JIT(或npm start)中都可以正常工作,但是當我嘗試通過匯總編譯代碼以將其作為AOT用於生產用途時,它就無法正常工作。

節點版本:6.9.4 npm版本:3.10.6

typings.json

    {
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160725163759",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#7.0.0+20170110233017",
    "socket.io-client": "registry:dt/socket.io-client#1.4.4+20161116080703"
  },
  "ambientDependencies": {
    "node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#138ad74b9e8e6c08af7633964962835add4c91e2",
    "socket-io-client": "github:DefinitelyTyped/DefinitelyTyped/socket.io-client/socket.io-client.d.ts#7de6c3dd94feaeb21f20054b9f30d5dabc5efabd",
    "es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654"
  }
}

systemjs.config.js

map : {"socket.io-client": 'npm:socket.io-client'}
packages : { "socket.io-client": {
            main: './socket.io.js',
            "defaultExtension": "js"
        } }

package.json:“ socket.io-client”:“ ^ 1.7.2”

mycomponent.ts

import * as io from 'socket.io-client';
var url = 'http://localhost:4500';
export var socket = io(url);

“ node_modules / .bin / ngc” -p tsconfig-aot.json成功執行,但“ node_modules / .bin / rollup” -c rollup-config.js給出錯誤: cannot call a namespace ('io')

如果我更改組件導入行並import io from socket.io-client設置import io from socket.io-client那么我會得到錯誤module 'socket.io-client' has no default export

如果有人可以指導我,我將不勝感激,因為這是我進行故障排除和嘗試其他論壇的第二天。

在此先感謝,Kapil

保持導入:

import * as io from 'socket.io-client';

並將插件添加到rollup.js:

{
    name: 'replace io imports',
    transform: code => ({
        code: code.replace(/import\s*\*\s*as\s*io/g, 'import io'),
        map: { mappings: '' }
    })
},

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM