2016-08-17 117 views
1

我有一个快递项目,客户端JavaScript在生成图形的单独文件中。我试图将快递路线中的变量传递给此JavaScript文件,以便绘制图形。 我已经尝试了下面的代码,但我得到以下错误。快递,如何将路由变量传递给客户端的JS文件

Error: Cannot find module 'js'

app.get('/users', function(req, res) { 
    res.render(path.join(__dirname, '../views/js/users_chart.js'), { 
    'users': users 
    }); 
}); 
+0

你有'views/js /'文件夹吗? – Craicerjack

+0

你不能使用'res.render()'作为JS文件,'res.render()'是为了和[View Engine]一起使用(https://github.com/expressjs/express/wiki? _ga = 1.12046708.1350534868.1471455458#模板引擎)。 – peteb

+0

@Craicerjack是的我有views/js /文件夹 – Ramez

回答

0

有用接收很大的帮助后,发现了一个解决方案。

为了在客户端有一个可以接收路由变量的JavaScript文件,我必须将JSON中的变量从路由文件发送到客户端的JavaScript文件。我使用XMLHttpRequest来接收客户端JavaScript文件中的JSON。

Bellow是users_graph.js的代码,它是客户端JavaScript文件。

var xmlhttp = new XMLHttpRequest(); 
var url = "/users"; 
xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     var users = JSON.parse(xmlhttp.responseText).users; 
     // do something with the users variable that was passed by the routes 

    } 
}; 

xmlhttp.open("GET", url, true); 
xmlhttp.setRequestHeader('Accept', 'application/json'); 
xmlhttp.send(); 
0

我觉得这是有帮助的,你检讨Express文档为res.renderserving static files

你不能呈现JS文件。

看样子你想为你的静态user_chart.js

/* server.js */ 
app.set('view engine', 'ejs'); 
app.register('.html', require('ejs')); 
// serve your js statically 
app.use('/js', path.join(__dirname, '../views/js/users_chart.js') 
app.get('/users', function(req, res) { 
    // pass variable to html page 
    res.render('users.html', { 
     'users': users 
    }); 
}); 

// in users.html 
<script type="text/javascript" src="/js/users_chart.js"> 

This post可能还有

+1

'app.register'没有在Express的最新版本中使用来注册一个新的视图引擎。相反,使用app.set('view engine',ejs);'将是一种方法,或者使用'app.engine('html',require('ejs')。renderFile);'指定一个新引擎。见[这里](http://expressjs.com/en/guide/using-template-engines.html)。 – peteb

+0

users_chart不是静态的,我试图将路由中的用户变量传递给它,以及导致问题的原因。 – Ramez

+0

@Ramez你读过答案的其余部分了吗?从提供的链接** res.render(view [,locals] [,callback])** *呈现一个视图并将呈现的HTML字符串发送到客户端* – Craicerjack