मैं परीक्षण के लिए कोणीय 2, सिस्टमजेएस और कर्म का उपयोग करके एक वेब ऐप बना रहा हूं।कोणीय 2 में सिस्टमजेएस और कर्म के साथ लोड नोड मॉड्यूल 2
मैं एक परीक्षण में नोड मॉड्यूल ngrx/store लोड करने के लिए कोशिश कर रहा हूँ:
404: /@ngrx/store
Chrome 48.0.2564 (Mac OS X 10.11.3) ERROR
Error: XHR error (404 Not Found) loading http://localhost:9876/@ngrx/store
मैं वास्तव में देव में एक ही समस्या थी:
import {
it, describe, expect, beforeEach, inject
} from 'angular2/testing';
import { Store } from '@ngrx/store';
describe('Graphs store',() => {
let graphs;
beforeEach(inject([Store], (store: Store<any>) => {
graphs = store.select('graphs');
}));
it('works',() => {
// expect graphs to do something...
});
});
लेकिन, मेरा परीक्षण निम्न संदेश के साथ असफल साथ ही, और यह पता चला है कि सिस्टमजेएस को पता नहीं था कि @ngrx/store
कहां मिलना है।
System.config({
packages: {
src: {
format: 'register',
defaultExtension: 'js'
}
},
map: { '@ngrx/store' : 'node_modules/@ngrx/store/dist/store.js' } // <-- this
});
मैं भी ऐसा ही करने के लिए अपने कर्म शिम फ़ाइल संशोधित: इस समस्या के समाधान के लिए, मैं ऐसा किया। पर परीक्षण दूसरी बार चल रहा है, अब मैं एक अलग त्रुटि मिलती है:
404: /node_modules/@ngrx/store/dist/store.js
Chrome 48.0.2564 (Mac OS X 10.11.3) ERROR
Error: XHR error (404 Not Found) loading http://localhost:9876/node_modules/@ngrx/store/dist/store.js
इसका मतलब यह है कि यह स्पष्ट पथ मैं इसे खाते में दिया ले जा किया जाना चाहिए, लेकिन यह अभी भी मॉड्यूल नहीं मिल रहा। मॉड्यूल के लिए यह सही पथ है, हालांकि, ब्राउज़र में लोड होने पर काम करता है।
मैं आगे क्या करना है इस पर बहुत खो गया हूं। क्या कोई मुझे सही दिशा दिखा सकता है?
कुछ बातेंगौर करने योग्य
- कर्मा के
files
सरणी नोड मॉड्यूल जोड़ा जा रहा है एक विकल्प नहीं है, क्योंकि इसकी निर्भरता SystemJS - यह केवल नोड मॉड्यूल के साथ होता है के साथ हल करने की आवश्यकता है जो SystemJS के लिए वे कहां स्थित हैं पर कस्टम निर्देशों की आवश्यकता है। मैं एक विशिष्ट स्थान के रूप में लंबे SystemJS उपलब्ध कराने के बिना अन्य मॉड्यूल मेरी परीक्षणों में ठीक लोड कर सकते हैं यह पता लगाने के लिए
यहाँ मेरी कर्म विन्यास है में सक्षम है: यहाँ
// Set up with the help of
// http://twofuckingdevelopers.com/2016/01/testing-angular-2-with-karma-and-jasmine/
module.exports = function(config) {
config.set({
basePath: '.',
frameworks: ['jasmine'],
files: [
// paths loaded by Karma
{pattern: 'node_modules/angular2/bundles/angular2-polyfills.js', included: true, watched: true},
{pattern: 'node_modules/systemjs/dist/system.src.js', included: true, watched: true},
{pattern: 'node_modules/rxjs/bundles/Rx.js', included: true, watched: true},
{pattern: 'node_modules/angular2/bundles/angular2.dev.js', included: true, watched: true},
{pattern: 'node_modules/angular2/bundles/testing.dev.js', included: true, watched: true},
{pattern: 'karma-test-shim.js', included: true, watched: true},
// paths loaded via module imports
{pattern: 'src/**/*.js', included: false, watched: true},
// paths to support debugging with source maps in dev tools
{pattern: 'src/**/*.ts', included: false, watched: false},
{pattern: 'src/**/*.js.map', included: false, watched: false}
],
// proxied base paths
proxies: {
// required for component assets fetched by Angular's compiler
'/src/': '/base/src/'
},
port: 9876,
logLevel: config.LOG_INFO,
colors: true,
autoWatch: true,
browsers: ['Chrome'],
// Karma plugins loaded
plugins: [
'karma-jasmine',
'karma-coverage',
'karma-chrome-launcher'
],
// // Coverage reporter generates the coverage
// reporters: ['progress', 'dots', 'coverage'],
//
// // Source files that you wanna generate coverage for.
// // Do not include tests or libraries (these files will be instrumented by Istanbul)
// preprocessors: {
// 'src/**/!(*spec).js': ['coverage']
// },
// coverageReporter: {
// reporters:[
// {type: 'json', subdir: '.', file: 'coverage-final.json'}
// ]
// },
singleRun: true
})
};
और मेरे कर्म शिम है:
// Tun on full stack traces in errors to help debugging
Error.stackTraceLimit = Infinity;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000;
// // Cancel Karma's synchronous start,
// // we will call `__karma__.start()` later, once all the specs are loaded.
__karma__.loaded = function() {};
System.config({
packages: {
'base/src': {
defaultExtension: 'js',
format: 'register',
map: Object.keys(window.__karma__.files).filter(onlyAppFiles).reduce(createPathRecords, {})
}
},
// This makes it work in the browser, but not in my tests!
paths: { '@ngrx/store' : 'node_modules/@ngrx/store/dist/store.js' }
});
System.import('angular2/src/platform/browser/browser_adapter')
.then(function(browser_adapter) { browser_adapter.BrowserDomAdapter.makeCurrent(); })
.then(function() { return Promise.all(resolveTestFiles()); })
.then(function() { __karma__.start(); }, function(error) { __karma__.error(error.stack || error); });
function createPathRecords(pathsMapping, appPath) {
// creates local module name mapping to global path with karma's fingerprint in path, e.g.:
// './vg-player/vg-player':
// '/base/src/vg-player/vg-player.js?f4523daf879cfb7310ef6242682ccf10b2041b3e'
var pathParts = appPath.split('/');
var moduleName = './' + pathParts.slice(Math.max(pathParts.length - 2, 1)).join('/');
moduleName = moduleName.replace(/\.js$/, '');
pathsMapping[moduleName] = appPath + '?' + window.__karma__.files[appPath];
return pathsMapping;
}
function onlyAppFiles(filePath) {
return /\/base\/src\/(?!.*\.spec\.js$).*\.js$/.test(filePath);
}
function onlySpecFiles(path) {
return /\.spec\.js$/.test(path);
}
function resolveTestFiles() {
return Object.keys(window.__karma__.files) // All files served by Karma.
.filter(onlySpecFiles)
.map(function(moduleName) {
// loads all spec files via their global module names (e.g.
// 'base/src/vg-player/vg-player.spec')
return System.import(moduleName);
});
}
अद्यतन
त्रुटि here साथ एक उदाहरण भंडार नहीं है। आप विशिष्ट परिवर्तन देख सकते हैं जो त्रुटि here का कारण बनते हैं। त्रुटि प्राप्त करने के लिए $ npm install
और $ npm test
चलाएं।
मैं इसी तरह के मुद्दों का सामना करना पड़ रहा है जब से परीक्षण ब्राउज़र। पथ यहां मुद्दा है। इस पर कोई अपडेट या आपकी समस्या हल हो गई थी? – Gary
अभी तक हल नहीं हुआ है। एक बक्षीस खोलने के बारे में सोच रहा है। मुझे इसे ठीक करने की ज़रूरत है। – weltschmerz
क्या आप एक [mcve] (http://stackoverflow.com/help/mcve) को गिट रेपो के रूप में अपलोड कर सकते हैं? –