app.get('')在带有查询参数

时间:2017-05-11 06:57:10

标签: javascript node.js

Iam试图为我的会话应用程序提供一条新路径,它应该接受与路由一起传递的参数应该被接受并且可以在客户端使用。但我无法弄清楚为什么基本.get()不起作用,我无法呈现HTML。

'use strict';
var express = require('express'); // app server
var bodyParser = require('body-parser'); // parser for post requests
var Conversation = require('watson-developer-cloud/conversation/v1'); // watson sdk
var bodyParser = require('body-parser');
var app = express();
app.use(express.static('./public')); // load UI from public folder
app.use(bodyParser.json());
app.get('/:id',function(req,res){
     var userid = req.params.id;
     var pid = req.query.pid;
     res.sendFile(__dirname,'/public/index.html');
});
module.exports = app;

在我的localhost:3000索引文件正在加载但是像localhost:3000/3405?pid = CBM它没有加载。

然后我在客户端有一个js文件,这将需要这两个值id和pid。现在我只是硬编码。但我怎么能将这些值用于客户端js文件..可以有人帮我怎么办这个... 感谢

更新:添加我的客户端js文件

var Api = (function() {
var messageEndpoint = '/api/message';
var emp = {
    "pid": "CBM",
    "id": "3405",};
return {
        sendRequest: sendRequest,
         modifytext: function(intent, text) {
            if (intent == "Hello") {
                console.log(text, "Inside intent");
                for (var key in emp) {
                    var tempKey = '{{' + key + '}}';
                    var tempValue = emp[key];
                    text = replace(text, tempKey, tempValue);
                    console.log("came back");
                }  
            }
            return text;
            console.log(text,"Final text");
        }
    };
    function replace(text, originalString, replaceText) {
        console.log("Reached replace functions", text, originalString, replaceText);
        if (replaceText)
            text = text.replace(originalString, replaceText);
        else
            text = text.replace(originalString, "");
        return text

    }
 }());

1 个答案:

答案 0 :(得分:1)

这是不正确的:

res.sendFile(__dirname,'/public/index.html');

应该是这样的:

res.sendFile(__dirname + '/public/index.html');

或者(更强大一点):

const path = require('path');
...
res.sendFile(path.join(__dirname, 'public/index.html'));

作为附注:显然,如果您将目录名称传递给res.sendFile(),它将发回404响应。不确定背后的基本原理是什么。