我一直在尝试在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)
at require(module.js:380:17)
在server.use.express.static.index(D:\ udu \ tcide_a \ src \ tcide \ server.js:613:24)
在Layer.handle [as 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 [as 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);
// });
});
答案 0 :(得分:0)
只需编写函数并将其导出到对象(不带.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
答案 1 :(得分:0)
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