Node.js 理解使用expressJS和spookyJS时的困难

Node.js 理解使用expressJS和spookyJS时的困难,node.js,express,spookyjs,Node.js,Express,Spookyjs,我目前正在使用expressJS为nodeJS服务器进行导航,并使用spookyJS进行测试,我想知道下面的代码是否可行 当用户访问http://localhost:3131/tests他看到一个html站点。这是完美的工作 示例代码: app.get('/tests', function (req, res) { res.render('tests.html'); }); app.get('/tests/start', function (req, res) { try {

我目前正在使用expressJS为nodeJS服务器进行导航,并使用spookyJS进行测试,我想知道下面的代码是否可行

当用户访问
http://localhost:3131/tests
他看到一个html站点。这是完美的工作

示例代码:

app.get('/tests', function (req, res)
{
    res.render('tests.html');
});
app.get('/tests/start', function (req, res)
{
   try {
    var Spooky = require('spooky');
} catch (e) {
    var Spooky = require('../../lib/spooky');
}

var spooky = new Spooky({
        casper: {
            logLevel: 'debug',
            verbose: true
        }
    }, function (err) {
        if (err) {
            e = new Error('Failed to initialize SpookyJS');
            e.details = err;
            throw e;
        }

        spooky.on('error', function (e) {
            console.error(e);
        }); ......
当用户访问
http://localhost:1337/tests/start
spookyJS测试应该启动,但事实并非如此

示例代码:

app.get('/tests', function (req, res)
{
    res.render('tests.html');
});
app.get('/tests/start', function (req, res)
{
   try {
    var Spooky = require('spooky');
} catch (e) {
    var Spooky = require('../../lib/spooky');
}

var spooky = new Spooky({
        casper: {
            logLevel: 'debug',
            verbose: true
        }
    }, function (err) {
        if (err) {
            e = new Error('Failed to initialize SpookyJS');
            e.details = err;
            throw e;
        }

        spooky.on('error', function (e) {
            console.error(e);
        }); ......
上面的代码不是完整的代码,它只是让您了解我想如何做。用expressJS可以这样做吗

我又举了一个小例子,它是有效的。当我在浏览器中导航到nodeJS服务器时,测试开始,如下面的示例
http://localhost:4141

var httpServer = require('http').createServer(function(req, response){
try {
        var Spooky = require('spooky');
    } catch (e) {
        var Spooky = require('../../lib/spooky');
    }

    var spooky = new Spooky({
            casper: {
                logLevel: 'debug',
                verbose: true
            }
.
.
.
.
});
httpServer.listen(1337);
为什么当我使用一个没有导航的普通nodeJS服务器,但使用expressJS导航时它不工作?谢谢你的帮助,
Alex

注意:require()会阻止IO,您应该只在文件顶部需要()模块,以便在加载时发生,而不是在路由中。(是的,在第一次缓存之后,它将被缓存,但它的形式仍然很差)提示@generalhenry