【问题标题】:express error - cannot find module - static file表达错误 - 找不到模块 - 静态文件
【发布时间】:2015-09-24 04:40:51
【问题描述】:

我不断收到错误消息,提示找不到模块 reddit.js。我的目录中有一个名为“routes”(不带引号)的文件夹。在那个文件夹中,我有 reddit.js,它是中间件。在下面的第一个文件中,我确实将其更改为 var reddit = require('./routes/reddit.js') 并收到错误消息“throw new TypeError('Router.use() requires middleware function but got一个 ^ TypeError: Router.use() 需要中间件功能但得到了一个对象 在 Function.use "

当我保留如下所示的代码时,我收到此错误:

错误:找不到模块“reddit.js”


我的 app.js 文件包含以下代码:

var express = require('express');
var app = express();
var fs = require('fs');
var reddit = require('reddit.js');

app.use ('/', reddit);
app.use(express.static('public'));
app.use(express.static('public/js'));
app.use(express.static('public/images'));
app.use(express.static('routes'));

我的 reddit.js 文件包含以下代码:

var express = require ('express');
var request = require ('request');
var reddit = express.Router();

reddit.get(function (req, res, next) {
    request('https://www.reddit.com/r/Showerthoughts/hot.json',function(error, response, body){
        console.log(body);
        var docs = JSON.parse(body).response;
        //var titles = [];
        console.log(docs);
        res.send(docs);
        next;
    });
});

我做错了什么?

【问题讨论】:

  • 如果reddit.jsapp.js在同一目录下,则需要使用require('./reddit.js');。 Node.js 不会自动查找当前目录。

标签: javascript node.js express backend static-files


【解决方案1】:

下面提到的是不正确的事情列表

  • 您不需要有.js 扩展名来包含文件。使用require('/path/to/reddit'); 而不是require('reddit.js');

  • 您需要将路由器实例导出到reddit.js。在文件末尾添加module.exports = reddit;

  • 在使用res.send(docs);发送响应后不要调用next()

  • 路由不是静态内容。删除app.use(express.static('routes'));

  • app.use(express.static('/public')); 处理 /public 文件夹内的所有静态内容。不需要加app.use(express.static('/public/js'));

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 2018-02-18
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2018-12-30
    相关资源
    最近更新 更多