2016-07-04 10 views
5
angular-cli: 0.0.39 
node: 6.2.2 
os: win32 x64 

मैं angular-cli साथ उत्पन्न एक angular2 एप्लिकेशन में socket.io-client आयात करने की कोशिश की, लेकिन मैं यह काम करने के लिए नहीं मिल सकता है।Angular2 CLI Socket.io (3 पार्टी पुस्तकालय आयात)

chat.component.ts

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

@Component({ 
    ... 
}) 
export class ChatAppComponent { 
    ... 
} 

प्रणाली config.ts

/** Map relative paths to URLs. */ 
const map: any = { 
    "socket.io-client": "vendor/socket.io-client/socket.io.js" 
}; 

/** User packages configuration. */ 
const packages: any = { 
    "socket.io-client": {"defaultExtension": "js"} 
}; 

कोणीय CLI-build.js

var Angular2App = require('angular-cli/lib/broccoli/angular2-app'); 

module.exports = function(defaults) { 
    return new Angular2App(defaults, { 
    vendorNpmFiles: [ 
     'systemjs/dist/system-polyfills.js', 
     'systemjs/dist/system.src.js', 
     'zone.js/dist/*.js', 
     'es6-shim/es6-shim.js', 
     'reflect-metadata/*.js', 
     'rxjs/**/*.js', 
     '@angular/**/*.js', 
     'socket.io-client/socket.io.js' 
    ] 
    }); 
}; 

package.json

{ 
     "dependencies": { 
     ... 
     "socket.io-client": "^1.4.8", 
     "systemjs": "0.19.26" 
     }, 
     "devDependencies": { 
     ... 
     "typescript": "^1.8.10", 
     "typings": " 
     } 
} 

typings.json

{ 
    "ambientDevDependencies": { 
    "angular-protractor": "registry:dt/angular-protractor#1.5.0+20160425143459", 
    "jasmine": "registry:dt/jasmine#2.2.0+20160412134438", 
    "selenium-webdriver": "registry:dt/selenium-webdriver#2.44.0+20160317120654" 
    }, 
    "ambientDependencies": { 
    "es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654", 
    }, 
    "globalDependencies": { 
    "socket.io-client": "registry:dt/socket.io-client#1.4.4+20160317120654" 
    } 
} 

त्रुटि और स्टैकट्रेस

Error: Typescript found the following errors: 
    C:/Users/Christian/Desktop/prototypes/chat-client/tmp/broccoli_type_script_compiler-input_base_path-5WNagLgm.tmp/0/src/app/chat.component.ts (4, 21): Cannot find module 'socket.io-client'. 
    at BroccoliTypeScriptCompiler._doIncrementalBuild (C:\Users\Christian\Desktop\prototypes\chat-client\node_modules\angular-cli\lib\broccoli\broccoli-typescript.js:115:19) 
    at BroccoliTypeScriptCompiler.build (C:\Users\Christian\Desktop\prototypes\chat-client\node_modules\angular-cli\lib\broccoli\broccoli-typescript.js:43:10) 
    at C:\Users\Christian\Desktop\prototypes\chat-client\node_modules\angular-cli\node_modules\broccoli-caching-writer\index.js:152:21 
    at lib$rsvp$$internal$$tryCatch (C:\Users\Christian\Desktop\prototypes\chat-client\node_modules\angular-cli\node_modules\broccoli-caching-writer\node_modules\rsvp\dist\rsvp.js:1036:16) 
    at lib$rsvp$$internal$$invokeCallback (C:\Users\Christian\Desktop\prototypes\chat-client\node_modules\angular-cli\node_modules\broccoli-caching-writer\node_modules\rsvp\dist\rsvp.js:1048:17) 
    at lib$rsvp$$internal$$publish (C:\Users\Christian\Desktop\prototypes\chat-client\node_modules\angular-cli\node_modules\broccoli-caching-writer\node_modules\rsvp\dist\rsvp.js:1019:11) 
    at lib$rsvp$asap$$flush (C:\Users\Christian\Desktop\prototypes\chat-client\node_modules\angular-cli\node_modules\broccoli-caching-writer\node_modules\rsvp\dist\rsvp.js:1198:9) 
    at _combinedTickCallback (internal/process/next_tick.js:67:7) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 

उत्तर

1

इस फाइल वर्तमान node_modules/socket.io-client/socket.io.js है।

चेक dts फ़ाइल सॉकेट-io के लिए typings फ़ोल्डर में मौजूद है।

चूंकि आपने पहले ही map में एक्सटेंशन निर्दिष्ट किया है, package के defaultExtension में इसे फिर से निर्दिष्ट करने की आवश्यकता नहीं है।
format: 'cjs' या format: 'amd' जोड़ने का प्रयास करें package -> socket.io-client

+0

'चैट-क्लाइंट \ node_modules \ socket.io-client \ socket.io.js' मौजूद है। 'चैट-क्लाइंट \ टाइपिंग \ ग्लोबल्स \ socket.io-client \ index.d.ts' भी। मैंने 'src/system-config.ts' में 'cjs' में प्रारूप बदल दिया, अभी भी काम नहीं कर रहा है: सी – Chris

0

प्रणाली config.ts में पुस्तकालय के आधार पर

/** Map relative paths to URLs. */ 
const map: any = { 
    "socket.io-client": "vendor/socket.io-client/" 
}; 

/** User packages configuration. */ 
const packages: any = { 
    "socket.io-client": { 
    format: 'cjs', 
    defaultExtension: 'js', 
    main: 'socket.io.js' 
} 
}; 

कोणीय CLI-build.js

module.exports = function(defaults) { 
    return new Angular2App(defaults, { 
    vendorNpmFiles: [ 
     'socket.io*/**/*.js' 
    ] 
    }); 
}; 

एक तरह कार्य करना आकर्षण कोणीय-क्ली: "1.0.0-बीटा.10"

0

यह मेरे लिए काम करता है:

npm install --save @types/socket.io-client 
+0

@axiac एक कोड-केवल उत्तर अच्छा नहीं हो सकता है, लेकिन यह अभी भी एक उत्तर है। मैं आपको इस पोस्ट को एलक्यूपीआरक्यू के बारे में सलाह दूंगा: [आप इसे गलत कर रहे हैं: कम गुणवत्ता वाले पदों में स्वच्छता के लिए एक याचिका] [http://meta.stackoverflow.com/questions/287563/youre-doing-it- गलत-ए-याचिका-के-सैनिटी-इन-द-कम-गुणवत्ता-पोस्ट-कतार) – FelixSFD

+0

@ फ़ेलिक्स एसएफडी आप सही हैं। मैंने जवाब की सामग्री पर पर्याप्त ध्यान नहीं दिया और यह धारणा थी कि यह उन उत्तरों में से एक है जो बताते हैं कि प्रश्न में समस्या को पुन: उत्पन्न नहीं किया जा सकता है। मैंने अब सवाल को और सावधानीपूर्वक पढ़ा है और यह उत्तर मान्य लगता है, भले ही यह छोटा हो। – axiac

3

1) स्थापित करें socket.io-ग्राहक

npm install socket.io-client --save 

2) स्थापित करें socket.io-ग्राहक typings

npm install @types/socket.io-client --save-dev 

3) आयात सॉकेट आपके ऐप/कोड में .io-client

import * as io from "socket.io-client"; 
+1

एक आकर्षण की तरह काम किया, धन्यवाद! – totallytotallyamazing