小编sal*_*lep的帖子

Express.js"path必须是绝对路径或指定root到res.sendFile"错误

注意:这不是一个重复的问题,我已经尝试过类似问题的其他答案.

我正在尝试渲染html文件(Angular),但我遇到了问题.这有效.

app.get('/randomlink', function(req, res) {
    res.sendFile( __dirname + "/views/" + "test2.html" );
});
Run Code Online (Sandbox Code Playgroud)

但是我不想一遍又一遍地复制和粘贴dirname,所以我尝试了这个,以免与url重复:

app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'views')));

app.get('/randomlink', function(req, res) {
     res.sendFile('test2.html'); // test2.html exists in the views folder
 });
Run Code Online (Sandbox Code Playgroud)

这是错误.

我的快递版是4.13

path必须是绝对的或指定root到res.sendFile

node.js express

5
推荐指数
2
解决办法
2万
查看次数

Laravel使用Eloquent进行多对多的关系

我正在尝试使用Laravel建立多对多的关系,但我被困住了.

这是我目前的表格模型:

专辑

album_id
name
created_at
Run Code Online (Sandbox Code Playgroud)

user_image

user_image_id
value
Run Code Online (Sandbox Code Playgroud)

albumxuser_image(联结表)

albumxuser_image_id (primary key & auto increment)
album_id (FK from album)
user_image_id (FK from user_image)
Run Code Online (Sandbox Code Playgroud)

我希望能够从albumxuser_image表中获取相册名称.

这是我到目前为止所做的.

Album.php模型

namespace App\Models;

use Illuminate\Database\Eloquent\Model;


class Album extends Model {

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'album';
    protected $primaryKey = 'album_id';

    public function AlbumxUserImage() {
        return $this->belongsToMany('AlbumxUserImage', 'albumxuser_image','album_id','user_image_id');
    }
}
Run Code Online (Sandbox Code Playgroud)

routes.php(因为我正在练习,所以我没有使用视图)

Route::get('all', function() {
    $albumxuserimage = AlbumxUserImage::all();
    foreach ($albumxuserimage->AlbumxUserImage as $getthem) {
        echo …
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-5.1

3
推荐指数
1
解决办法
6726
查看次数

使用jQuery Ajax的Express.js csrf标记

我试图在我的项目中实现csrf保护,但我不能使它与jQuery Ajax一起工作.(但它适用于正常的帖子请求)

如果我在发送表单之前使用chrome dev工具篡改令牌,我仍然会看到"正在处理数据"文本而不是invalid csrf token错误.

app.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var csrf = require('csurf');
var bodyParser = require('body-parser');
var router = express.Router();
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
//app.set('strict routing', true);
app.set('view options', {layout: false});

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(cookieParser());

var csrfProtection = csrf({ cookie: true });
var parseForm = bodyParser.urlencoded({ extended: false …
Run Code Online (Sandbox Code Playgroud)

csrf node.js express

2
推荐指数
1
解决办法
3685
查看次数

Express.js,bin / www设置和Socket.io

问题解决了。

请在下面查看我的答案。


问题:

我正在尝试使socketio并在同一端口上进行工作,这是我得到的错误。

events.js:141
      throw er; // Unhandled 'error' event
      ^
Error: listen EACCES 0.0.0.0:80
    at Object.exports._errnoException (util.js:874:11)
    at exports._exceptionWithHostPort (util.js:897:20)
    at Server._listen2 (net.js:1221:19)
    at listen (net.js:1270:10)
    at Server.listen (net.js:1366:5)
    at Object.<anonymous> (/Users/app.js:22:8)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
Run Code Online (Sandbox Code Playgroud)

我可以使用sudo npm start来启动服务器,但是现在有两个服务器正在运行,分别是localhost:3000(express)和localhost:80(express和socket.io)。

如何禁用:3000而不破坏bin / www中的任何内容?

我正在使用Express 4。

这是我的看法

html
    head
        title Socket.io
        script(src="/socket.io/socket.io.js")
    body
        script(src="javascripts/ol.js")
Run Code Online (Sandbox Code Playgroud)

ol.js(客户端)

var socket = io.connect('http://localhost');
socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', {my: 'data'});
});
Run Code Online (Sandbox Code Playgroud)

这是我的app.js

var …
Run Code Online (Sandbox Code Playgroud)

node.js express socket.io

2
推荐指数
1
解决办法
1234
查看次数

Express.js ERR_TOO_MANY_REDIRECTS错误

这是场景.

如果用户想要查看需要用户访问的页面,我想将其重定向到主页,但是当我尝试访问主页时,我收到ERR_TOO_MANY_REDIRECTS错误.

我无法弄清楚如何解决这个问题.

app.js

exports.ensureAuthenticated = function (req, res, next) {
    jwt.verify(req.cookies.userToken, "NICETRY", function (err, decoded) {
        if (err) {
            res.redirect("http://localhost:4000");
        } else {
            // no err
            if (decoded.id) {
                req.id = decoded.id;
                req.iat = decoded.iat;
                next();
            } else {
                res.send("invalid cookie");
            }
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

路由/前端/ index.js

var express = require('express');
var router = express.Router();

var indexController = require('../../controllers/frontend/indexController');
var auth = require('../../app').ensureAuthenticated;

router.get('/', auth, indexController.index);

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

indexController.js

exports.index = function (req, res) {
    res.render('frontend/home/index');
};
Run Code Online (Sandbox Code Playgroud)

node.js express

2
推荐指数
1
解决办法
3518
查看次数

Node.js rsmq - 在 Node.js 应用程序重新启动之前,新消息不可见

我正在努力使这个包工作。

redis 版本:稳定 4.0.6

我像这样连接Redis,那里没有问题。

发布订阅.js

var redis = require("redis");
var psRedis = redis.createClient();

psRedis.auth("mypasswordishere", function (callback) {
  console.log("connected");
});

module.exports.psRedis = psRedis;
Run Code Online (Sandbox Code Playgroud)

启动 Node.js 应用程序后,我可以在控制台上看到“已连接”并执行操作,我已经检查过了。

我的test.js文件在下面。

测试.js

var express = require('express');
var router = express.Router();
var path = require("path");
var bodyParser = require('body-parser');
var async1 = require("async");
var client = require("../databases/redis/redis.js").client;

var RedisSMQ = require("rsmq");

var psRedis = require("./realtime/operations/pubsub").psRedis;

var rsmq = new RedisSMQ({client: psRedis});

rsmq.createQueue({qname: "myqueue"}, function (err, resp) {
  if (resp === 1) …
Run Code Online (Sandbox Code Playgroud)

redis node.js node-redis

2
推荐指数
1
解决办法
1077
查看次数

Passport.js 记住我的功能

https://github.com/jaredhanson/passport-remember-me

passport.use(new RememberMeStrategy(
  function(token, done) {
    Token.consume(token, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      return done(null, user);
    });
  },
  function(user, done) {
    var token = utils.generateToken(64);
    Token.save(token, { userId: user.id }, function(err) {
      if (err) { return done(err); }
      return done(null, token);
    });
  }
));
Run Code Online (Sandbox Code Playgroud)

邮政

app.post('/login', 
  passport.authenticate('local', { failureRedirect: '/login', failureFlash: true }),
  function(req, res, next) {
    // issue a remember me cookie if the option was checked
    if …
Run Code Online (Sandbox Code Playgroud)

node.js express passport-local passport.js

1
推荐指数
1
解决办法
3968
查看次数

NodeJS JWT令牌验证

我正在尝试验证签名的令牌并使用NodeJS从中提取信息。

我现在在浏览器中有一个名为userToken的令牌,登录后已保存(我使用auth0登录)。

我尝试在此处手动验证我的令牌:http : //jwt.io,它可以正常工作,并且为我提供了有效载荷数据,而没有出现问题。但是,我不能用NodeJS做同样的事情。我该怎么做?

我读了文档,但听不懂。 https://github.com/auth0/express-jwt

这是我的server.js

var http = require('http');
var express = require('express');
var cors = require('cors');
var app = express();
var jwt = require('express-jwt');
var dotenv = require('dotenv');

dotenv.load();

var authenticate = jwt({
    secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
    audience: process.env.AUTH0_CLIENT_ID
});


// view engine setup
var path = require('path');
app.set('views', path.join(__dirname, 'views'));
app.use(express.static(path.join(__dirname, 'public')));

app.set('view engine', 'jade');


app.configure(function () {

    // Request body parsing middleware should be above methodOverride
    app.use(express.bodyParser());
    app.use(express.urlencoded());
    app.use(express.json());
    app.use(cors());

    app.use(app.router);
}); …
Run Code Online (Sandbox Code Playgroud)

javascript node.js auth0

1
推荐指数
2
解决办法
2400
查看次数

Node.js + Cheerio:循环内请求

我正在使用cheerio,request和Node.js.

当我运行下面的脚本时,它会以错误的顺序输出名称.我相信它是由它的异步性质引起的,我怎样才能让它以"正确"的顺序运行?我是否需要使用同步包或是否有办法以某种方式更改它以便它以同步方式工作?

app.get('/returned', function (req, res) {
    for (var y = 0; y < 10; y++) {
        var url = "http://example.com" + y + "/person.html";
        request(url, function (err, resp, body) {
            $ = cheerio.load(body);
            var links = $('#container');
            var name = links.find('span[itemprop="name"]').html(); // name
            if (name == null) {
                console.log("returned null");
            } else {
                console.log(name);
            }

        });
    }
});
Run Code Online (Sandbox Code Playgroud)

node.js cheerio

1
推荐指数
1
解决办法
1983
查看次数