के साथ एक्सटेंशन मैं प्रतिक्रिया जेएसएक्स घटकों का एक समूह का परीक्षण कर रहा हूं। उन्हें सभी को प्रतिक्रिया, या बेबेल या जो भी हो, के साथ पारदर्शी होने की आवश्यकता है, लेकिन हमारे पास आवश्यकताओं को रोकने के लिए विशेष आवश्यकताएं हैं, इसलिए मैं मोचा के साथ चलने वाले विशेष कंपाइलर के साथ ओवरराइड करने की कोशिश कर रहा हूं। नीचे दिया गया समाधान अच्छी तरह से काम करता है, लेकिन आप देखेंगे कि हम सभी .jsx फ़ाइलों को कैप्चर करने के लिए require.extensions [] का उपयोग कर रहे हैं। मुझे क्या चिंता है कि आवश्यकता है। एक्सटेंशन लॉक और बहिष्कृत है। क्या ऐसा करने का कोई बेहतर तरीका है?आवश्यकता के लिए बेहतर तरीका। Node.js
// Install the compiler.
require.extensions['.jsx'] = function(module, filename) {
return module._compile(transform(filename), filename);
};
यहाँ संदर्भ के लिए पूरे transpiler है:
// Based on https://github.com/Khan/react-components/blob/master/test/compiler.js
var fs = require('fs'),
ReactTools = require('react-tools');
// A module that exports a single, stubbed-out React Component.
var reactStub = 'module.exports = require("react").createClass({render:function(){return null;}});';
// Should this file be stubbed out for testing?
function shouldStub(filename) {
if (!global.reactModulesToStub) return false;
// Check if the file name ends with any stub path.
var stubs = global.reactModulesToStub;
for (var i = 0; i < stubs.length; i++) {
if (filename.substr(-stubs[i].length) == stubs[i]) {
console.log('should stub', filename);
return true;
}
}
return false;
}
// Transform a file via JSX/Harmony or stubbing.
function transform(filename) {
if (shouldStub(filename)) {
delete require.cache[filename];
return reactStub;
} else {
var content = fs.readFileSync(filename, 'utf8');
return ReactTools.transform(content, {harmony: true});
}
}
// Install the compiler.
require.extensions['.jsx'] = function(module, filename) {
return module._compile(transform(filename), filename);
};
और कुछ लिंक समाधान simalar करने के लिए ...
- https://github.com/danvk/mocha-react/issues/1
- https://github.com/Automattic/jsx-require-extension
- https://www.npmjs.com/package/node-jsx
- https://github.com/olalonde/better-require
- http://mochajs.org/#usage
- http://nodejs.org/api/globals.html#globals_require_extensions
एक समाधान यहाँ से अलग किया जा सकता है: https://github.com/danvk/mocha-react
गीथब पर हमारी चर्चा के बाद, इस सटीक मुद्दे के बारे में इस धागे को देखें - https://groups.google.com/forum/#!searchin/nodejs/require.extensions/nodejs/QsOEWvptQpA/G6xYTm52N60J यह मेरी समझ है यदि आप ऊपर की तरह लाइन में सीधे पारदर्शी जेएस लोड करना चाहते हैं तो कोई दूसरा विकल्प नहीं है। उम्मीद है कि मुझे सही किया जाएगा :) –
दस्तावेज़ों से: "चूंकि मॉड्यूल सिस्टम लॉक है, यह सुविधा शायद कभी नहीं चली जाएगी"। साथ ही, उपर्युक्त दस्तावेज लिंक अब मान्य नहीं है। आप इसे https://nodejs.org/api/modules.html#modules_require_extensions के साथ प्रतिस्थापित कर सकते हैं। –