2014-08-31 66 views
0

我正在从我的路由文件中的外部JS文件调用一个函数。所以,我试图从我的externalFile.js文件中导出一个函数。但是,当我运行节点服务器时,它会抛出Uncaught ReferenceError: exports is not definedexternalFile.js位于public/javascripts/,路由文件位于routes/未在外部JS文件中定义的NodeJS导出

外部文件(externalFile.js):

exports.capsolvingComplete = function (stdout){ 
    //Received, display text and hide the spinner, put check in place. 
    $('#capsolv-complete').css("display", "block") 
    $('#capsolv-output').text(stdout); 
} 

路线文件:

var express = require('express'); 
var router = express.Router(); 
var script = require('../public/javascripts/externalFile.js') 

/* GET home page. */ 
router.get('/', function(req, res) { 
    res.render('index', { title: 'CapSolv' }); 
}); 

router.post('/file-upload', function(req, res){ 
    script.capsolvingComplete("HI"); 
    res.end("success"); 
}) 

module.exports = router; 

谢谢您的帮助!节点noob在这里。

+0

即使'capsolvingComplete'工作,您如何期望在POST过程中使用node.js中的jquery更新客户端? – mscdex 2014-08-31 18:53:05

+0

操纵服务器端的DOM通常会皱眉? – goodcow 2014-08-31 18:56:28

+2

你不能像这样从节点操纵客户端的DOM。如果你想在上传进度等方面更新客户端,你需要使用诸如websockets/socket.io/sockjs/etc之类的东西。将消息推送到客户端,然后更新DOM。 – mscdex 2014-08-31 19:00:07

回答

0

看你的例子,mscdex是正确的。 Node中需要的任何东西都是为了在服务器上运行而设计的,并且无法访问浏览器的DOM。

我建议构建一个接受文件上传,存储它并返回包含元数据的JSON对象的REST API:即存储文件的位置,大小等,并让您的客户端处理它。