[英]Using external javascript files in node.js without using export and require
[英]Using require in nodejs to access external javascript files
我一直試圖在nodejs中使用require來訪問帶有簡單腳本的javascript文件。 我的目標是需要腳本並將其返回值輸出到控制台。 到目前為止,這就是我所擁有的:
oper2 = function(){
var x = 1;
var y = x+1;
return y;
};
module.exports = {
oper2: oper2
};
這是我想通過我的nodejs api訪問的文件,在api中,我有以下代碼嘗試使用require:
var dir = 'files/'+name;
var func = require('./'+dir);
console.log("here?");
console.log("Value" + func.oper2()); //test operation
res.json('done');//value received by the api
我嘗試了該文件的多個版本以及要求該文件的代碼,但是還沒有走得很遠。 它總是在var func = .....行中崩潰,提示錯誤找不到模塊。 即使在此之前我已經有代碼可以測試它是否讀取文件,並且正在查找和讀取文件。
任何幫助將不勝感激,謝謝。
編輯:
files.route('/:name/execute')
.post(function (req, res){
var dir = 'files/'+name;
var func = require('./'+dir);
console.log("here?");
console.log("Value " + func.oper2);
res.json('done');
});
目前,它仍然會在需要時崩潰。
編輯3收到錯誤:
在Function.Module._resolveFilename(module.js:338:15)
在Function.Module._load(module.js:280:25)
在Module.require(module.js:364:17)
在需要時(module.js:380:17)
在server.use.express.static.index(D:\\ udu \\ tcide_a \\ src \\ tcide \\ server.js:613:24)
在Layer.handle上[作為handle_request](D:\\ udu \\ tcide_a \\ src \\ tcide \\ node_modules \\ express \\ lib \\ router \\ layer.js:82:5)
在下一個(D:\\ udu \\ tcide_a \\ src \\ tcide \\ node_modules \\ express \\ lib \\ router \\ route.js:110:13)
在Route.dispatch(D:\\ udu \\ tcide_a \\ src \\ tcide \\ node_modules \\ express \\ lib \\ router \\ route.js:91:3)
在Layer.handle上[作為handle_request](D:\\ udu \\ tcide_a \\ src \\ tcide \\ node_modules \\ express \\ lib \\ router \\ layer.js:82:5)
在D:\\ udu \\ tcide_a \\ src \\ tcide \\ node_modules \\ express \\ lib \\ router \\ index.js:267:22
編輯4(這是我的確切代碼,我在上面進行了簡化):
behaviorR.route('/:behavior/execute')
.get(function (req, res){
var dir = 'operations/'+req.params.behavior;
// if(!fs.existsSync(dir)){
// console.log('Not found');;
// }
// else{
console.log('About to require');
var func = require('./'+dir);
console.log("here?");
// console.log("Value %d", func.oper2(5));
res.json('done');
// }
// fs.readFile('operations/'+req.params.behavior+'.js', "utf8", function(error, data) {
// res.json(data);
// });
});
只需編寫函數並將其導出到對象內即可(不帶.js)
var oper2 = function(value){
var x = 1;
var y = x+1+value;
return y;
};
// Export object which contains the above method
module.exports = {
oper2: oper2
};
在您的主模塊中
var dir = 'files/'+name;
var func = require('./'+dir);
console.log("Value %d", func.oper2(5)); //test operation
res.json('done');//value received by the api
module.exports
是require返回的對象。 使用module.exports將使您所需的模塊像函數一樣被調用。
var oper2 = function(value){
var x = 1;
var y = x+1+value;
return y;
};
module.exports = oper2;
並在主文件中
var dir = 'files/'+name;
var func = require('./'+dir);
console.log("Value %d", func(5)); //test operation
res.json('done');//value received by the api
使用exports
您可以將函數和對象添加到模塊的根目錄。
exports.oper2 = function(value){
var x = 1;
var y = x+1+value;
return y;
};
並在主文件中
var dir = 'files/'+name;
var func = require('./'+dir);
console.log("Value %d", func.oper2(5)); //test operation
res.json('done');//value received by the api
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.