नोड.जेएस प्रोजेक्ट में लूपबैकजेएस के साथ निर्मित करने के लिए मुझे अनुरोध के दौरान डेटा स्टोर करने की आवश्यकता है।Node.js process.domain कभी-कभी
// pre-processing middleware
app.use(function (req, res, next) {
// create per request domain instance
var domain = require('domain').create();
// save request and response to domain, to make it accessible everywhere
domain.req = req;
domain.res = res;
domain.run(next);
});
आवश्यक मॉड्यूल में बाद में:
तो मैं domain सुविधा का उपयोग किया
Model.beforeRemote('**', function(oContext, oModel, next) {
// Save method name for later use
process.domain.remoteContext = { /* Here is an error thrown */
methodName: oContext.method.name
};
...
process.domain.res.send() // example of usage
})
लेकिन जब मैं सफारी या IE से अनुरोध करते हैं, process.domain कभी कभी अपरिभाषित है! क्रोम या फ़ायरफ़ॉक्स से अनुरोध करना अपेक्षित काम करता है। कोई सुझाव?
त्रुटि प्रतिक्रिया:
{"error":{"name":"TypeError","status":500,"message":"Cannot set property 'remoteContext' of undefined","stack":"TypeError: Cannot set property 'remoteContext' of undefined\n at module.exports (/Users/igormatyushkin/projects/Yash/server/hooks/admin-remote.js:12:34)\n at Function.Model.setup.ModelCtor.beforeRemote.args (/Users/igormatyushkin/projects/Yash/node_modules/loopback/lib/model.js:184:9)\n at execStack (/Users/igormatyushkin/projects/Yash/node_modules/loopback/node_modules/strong-remoting/lib/remote-objects.js:363:13)\n at RemoteObjects.execHooks (/Users/igormatyushkin/projects/Yash/node_modules/loopback/node_modules/strong-remoting/lib/remote-objects.js:372:10)\n at RemoteObjects.invokeMethodInContext (/Users/igormatyushkin/projects/Yash/node_modules/loopback/node_modules/strong-remoting/lib/remote-objects.js:512:8)\n at async.series.results (/Users/igormatyushkin/projects/Yash/node_modules/loopback/node_modules/strong-remoting/node_modules/async/lib/async.js:610:21)\n at _asyncMap (/Users/igormatyushkin/projects/Yash/node_modules/loopback/node_modules/strong-remoting/node_modules/async/lib/async.js:249:17)\n at async.eachSeries.iterate (/Users/igormatyushkin/projects/Yash/node_modules/loopback/node_modules/strong-remoting/node_modules/async/lib/async.js:149:13)\n at async.eachSeries (/Users/igormatyushkin/projects/Yash/node_modules/loopback/node_modules/strong-remoting/node_modules/async/lib/async.js:165:9)\n at _asyncMap (/Users/igormatyushkin/projects/Yash/node_modules/loopback/node_modules/strong-remoting/node_modules/async/lib/async.js:248:13)"}}
क्या आप हमें वह कोड दिखा सकते हैं जहां डोमेन अपरिभाषित है? क्या आप उसी क्षेत्र से डोमेन तक पहुंच रहे हैं जहां आपने इसे परिभाषित किया था? आपके कोड उदाहरण में, आप वास्तव में प्रक्रिया में डोमेन को संलग्न नहीं कर रहे हैं - मुझे लगता है कि आप अपने कोड में कहीं और ऐसा करते हैं?इसके अलावा, कृपया अवांछित त्रुटि के लिए अग्रणी स्टैक ट्रेस पोस्ट करें, इसमें एक सुराग या दो हो सकते हैं। –
@RobertRossmann, मैंने कोड अपडेट किया और फेंक दिया त्रुटि जोड़ा। 'Process.domain' को नोड द्वारा प्रारंभ किया जाता है, जब' domain.run() 'कहा जाता है और मैं अन्य आवश्यक मॉड्यूल में बाद में 'process.domain.remoteContext' तक पहुंचता हूं। – IvanZh