【发布时间】:2015-03-18 13:01:48
【问题描述】:
我一直在尝试在 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 [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);
// });
});
【问题讨论】:
标签: javascript node.js file require