小编jan*_*s86的帖子

如何从nodejs/express向浏览器发送成功状态?

我在nodeJS/Expressjs服务器中编写了以下代码:

app.post('/settings', function(req, res){
    var myData = {
        a: req.param('a')
        ,b: req.param('b')
        ,c: req.param('c')
        ,d: req.param('d')
    }

    var outputFilename = 'config.json';

    fs.writeFile(outputFilename, JSON.stringify(myData, null, 4), function(err) {
        if(err) {
          console.log(err);
        } else {
          console.log("Config file as been overwriten");
        }
    }); 
});
Run Code Online (Sandbox Code Playgroud)

});

这允许我获取提交的表单数据并将其写入JSON文件.

这非常有效.但是客户仍处于某种状态,并最终超时.所以我需要将某种成功状态或成功标题发送回客户端.

我该怎么做?

先感谢您!

forms post node.js express

53
推荐指数
4
解决办法
7万
查看次数

ReactJS:onClick更改元素

我刚开始学习React并有一个问题.

我想做以下事情:

如果用户单击某个段落,我想将该元素更改为具有预填充段落内容的输入字段.(如果用户具有某些特权,最终目标是直接编辑)

我走到这一步,但完全不知所措.

var AppHeader = React.createClass({
    editSlogan : function(){
        return (
            <input type="text" value={this.props.slogan} onChange={this.saveEdit}/>
         )
    },
    saveEdit : function(){
        // ajax to server
    },
    render: function(){
        return (
            <header>
                <div className="container-fluid">
                    <div className="row">
                        <div className="col-md-12">
                            <h1>{this.props.name}</h1>
                            <p onClick={this.editSlogan}>{this.props.slogan}</p>
                        </div>
                    </div>
                </div>
            </header>
        );
    }
});
Run Code Online (Sandbox Code Playgroud)

如何从editSlogan函数中覆盖渲染?

javascript reactjs

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

在linux上运行节点(express)会产生Error:spawn EACCES

我正在使用Expressjs构建一个节点应用程序,我正在尝试在新安装的Ubuntu上运行我的节点应用程序(我刚刚安装了git和node v 0.10.19).

可悲的是,我在尝试在终端中运行应用程序时遇到以下错误:

 Events.js:72
    throw er; // unhandled 'error' event

Error: spawn EACCES
Run Code Online (Sandbox Code Playgroud)

我在3000端口运行,我正在使用sudo.我也尝试了root,我也玩了1024个阈值以上的不同端口.

该应用程序只是基本的Expressjs,我使用默认方法打开应用程序套接字:

  app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

我是一个Linux菜鸟所以任何帮助表示赞赏.顺便说一句,该应用程序在Windows上运行得非常好.

基本服务器代码:

    var express = require('express')
    , app = express()
    , fs = require ('fs')
    , lingua = require('lingua');

    process.env.NODE_ENV = 'development';

    app.configure(function(){
        app.set('view engine', 'jade');
        app.set('views', __dirname + '/views');
        app.setMaxListeners(100);
        app.use(express.bodyParser());
        app.use(express.methodOverride());
        app.use(express.static(__dirname + '/public'));
        app.use(express.favicon(__dirname + '/public/core/favicon.ico'));
        app.use(lingua(app, {
            defaultLocale: 'translation_',
            storageKey: 'lang',
            path: __dirname+'/public/translations/',
            cookieOptions: {
                httpOnly: false,        
                expires: new Date(Date.now(-1)),  
                secure: false
            }
        }));
        app.use(app.router);
        app.locals.pretty = true;
    }); …
Run Code Online (Sandbox Code Playgroud)

ubuntu port node.js express

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

什么将在搜索引擎中更好地索引:img标签或带有屏幕阅读器标签的背景图像?

在构建响应式网站时,我有时会使用背景图像为适当的屏幕尺寸渲染合适的图像.

例如:

    #image { 
        background-image: url(largeimage.jpg); 
    }
    @media only screen and (max-width: 320px) {
        #image { 
            background-image: url(smallimage.jpg); 
        }
    }
Run Code Online (Sandbox Code Playgroud)

为了让屏幕阅读器知道我们正在处理什么类型的元素,我添加

role="img"
Run Code Online (Sandbox Code Playgroud)

aria-label
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

我一直都知道SEO最好在实际的图像元素中添加像公司徽标这样的图像.

例如

<img src="logo-companyname.png">
Run Code Online (Sandbox Code Playgroud)

原因是当Google图像搜索公司名称时,徽标会显示.(假设网站排名很好)

谷歌在作为div实施时仍会"刮"出徽标吗?例如

<div id="logo-company" role="img" aria-label="company name"></div>
Run Code Online (Sandbox Code Playgroud)

或者我是否仍需要在某处添加图像以获得所需的结果?谷歌是否会对屏幕阅读器标签做任何事情?

html css seo image responsive-design

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

React:嵌套onclick也会触发parent

我使用光滑旋转木马的反应版本来制作像旋转木马一样的Netflix.您可以单击图块,然后展开该图块以显示该图块的详细信息.

例:

在此输入图像描述

由于Slicks处理动态高度的能力,这非常有效.我想在展开的部分添加一个关闭按钮(如最右边所示).但这就是我遇到问题的地方.

如果我添加一个带有onClick处理程序的关闭按钮,它将始终触发显示扩展部分的父Onclick.

showExpanded onclick函数只是设置了showDetails状态.

所以我的问题是:

如何通过单击关闭按钮来设置状态,而不会触发包装父级.

我尝试了event.preventDefault()和event.stopPropagation()但是没有做到这一点.

Tile click看起来像这样:

expandTile(){
  this.setState({
    showDetails: true,
    closeTile: false
  });
}
Run Code Online (Sandbox Code Playgroud)

关闭按钮单击功能,因为我现在有:

closeTile(e){
   e.preventDefault();
   e.stopPropagation();
   const showDetails = this.state.showDetails;
   if(showDetails){
      this.setState({
        showDetails: false,
        closeTile: true
      });
   }
}
Run Code Online (Sandbox Code Playgroud)

更新:添加了JSX:

  return (
    <div className={s.itemPreWrapper} key={`${el.title}-item-${index}`}>
      <div className={`${s.item} ${showDetails ? s.showDetails : ''}`}
           onClick={self.state.expandItem}
           data-index={index}
        <div className={s.itemCaret}></div>
        <div className={s.imgWrapper}>
          <img src={el.itemImage}/>
        </div>
        <div className={s.overlay}>
          {el.title}
        </div>
        <div className={s.expandedTile} style={{left: '-'+offset+'px'}}>
          <div className={s.etItem}>
           <div key={`subitem-${index}`} ref="subItem">
            <div className="row">
              <div className={`${s.etClose}`} onClick={self.state.closeTile}><span></span></div>
              <div className="col-xs-12 col-sm-3">
                <div …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs slick.js

7
推荐指数
2
解决办法
4852
查看次数

让NodeJS应用程序使用NPM更新自己

嘿那里,

我正在尝试为我的NodeJS应用程序添加一些非传统功能,但我遇到了一些麻烦.我想要做的是以下内容:

我想从客户端更新我的服务器代码.(如果您愿意,可以使用自动更新功能.)

我的第一次尝试是使用NPM API并运行:

 npm.commands.install([package], function(err, data)
Run Code Online (Sandbox Code Playgroud)

但是当然这会导致错误告诉我在服务器运行时NPM无法安装.

我的第二次尝试是使用以下代码生成NPM更新:

  spawnProcess('npm', ['update'], { cwd: projectPath }, done);
Run Code Online (Sandbox Code Playgroud)

spawnProcess函数是一个通用的spawn函数:

var projectPath = path.resolve(process.cwd());
var spawnProcess = function(command, args, options, callback) {
    var spawn = require('child_process').spawn;
    var process = spawn(command, args, options);
    var err = false;

    process.stdout.on('data', function(data) {
        console.log('stdout', data.toString());
    });

    process.stderr.on('data', function(data) {
        err = true;
        console.log('stderr', data.toString());
    });

    if (typeof callback === 'function') {
        process.on('exit', function() {
            if (!err) {
                return callback();
            }
        });
    }
};
Run Code Online (Sandbox Code Playgroud)

但这给了我一个stderr,然后是'CreateProcessW:找不到文件'错误.我不太清楚我做错了什么.

如果所有其他方法都失败了,我认为可能编写一个shellcript kill …

javascript spawn node.js npm

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

HTML画布,模糊绘制的多边形

我做了这个(下面的运行片段)

 var Canvas = document.getElementById('c');
    var ctx = Canvas.getContext('2d');

    var resize = function() {
        Canvas.width = Canvas.clientWidth;
        Canvas.height = Canvas.clientHeight;
    };
    window.addEventListener('resize', resize);
    resize();

    var elements = [];
    var presets = {};

    presets.shard = function (x, y, s, random, color) {
        return {
            x: x,
            y: y,
            draw: function(ctx, t) {
                this.x += 0;
                this.y += 0;
                var posX = this.x + + Math.sin((50 + x + (t / 10)) / 100) * 5;
                var posy = this.y + + …
Run Code Online (Sandbox Code Playgroud)

html javascript canvas

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

反应路由器链接; activeClassName不起作用

我有一个导航组件,呈现每个导航链接.此组件的返回如下所示:

     return (
        <li key={`nav-list-${el.title}-${index}`}>
          <Link to={{pathname: '/c/' + el.urlkey}}
                activeClassName={s.active}>{el.title}</Link>
          {subNav}
        </li>
      );
Run Code Online (Sandbox Code Playgroud)

活动类仅在页面刷新时设置.单击链接时,活动指示符将保留在初始链接中.

我没有使用Redux,所以它似乎与此问题无关:当点击链接时,activeClassName在sideMenu上不起作用

我的路线看起来像这样:

      <Route path="/c/:category(/:title)" component={CategoryView} name="category" />
Run Code Online (Sandbox Code Playgroud)

使用React-Router 2.8.1和browserHistory

javascript reactjs react-router

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

使用FFMPEG在浏览器中编码静态文件的交叉设备(分段h264?)

我正在NodeJS中构建一个mediacenter应用程序,这很不错.(你可以在Github上查看:https://github.com/jansmolders86/mediacenterjs)

我正在使用FFMPEG将本地(静态)电影转码为流然后发送到浏览器.

起初我使用h264和Flash在浏览器中工作,但我真的需要它在Android上运行iOS(所以没有Flash),最好是在Raspberry Pi上工作.

但是让它在所有设备上播放让我绝对疯狂!

我从无数小时阅读文章,教程和堆栈溢出帖子中收集了所有这些难题,这使我得出结论,我需要生成以下内容:

  • 使用视频编解码器H264转码为MP4
  • 移动moovatom'-movflags'以使MP4可流化
  • 对流进行分段,以便Apple也可以播放流.

但无处可去.每次我制作一系列不起作用的FFMPEG设置,或者在某些设备上工作而不是全部工作.

我失败的一些尝试在哪里:

我的闪存尝试 - > 主要问题(不在IOS中运行):

    '-y','-ss 0','-b 800k','-vcodec libx264','-acodec mp3'\ 
    '-ab 128','-ar 44100','-bufsize 62000', '-maxrate 620k'\
    metaDuration,tDuration,'-f flv
Run Code Online (Sandbox Code Playgroud)

我的HLS尝试 - > 主要问题(未在浏览器中运行):

        '-r 15','-b:v 128k','-c:v libx264','-x264opts level=41'\
        '-threads 4','-s 640x480','-map 0:v','-map 0:a:0','-c:a mp3'\
        '-b:a 160000','-ac 2','-f hls','-hls_time 10','-hls_list_size 6'\
        '-hls_wrap 18','-start_number 1'
Run Code Online (Sandbox Code Playgroud)

我的MP4尝试 - > 主要问题(持续时间缩短,视频后期加速)

       '-y','-ss 0','-b 800k','-vcodec libx264','-acodec mp3'\
       '-ab 128','-ar 44100','-bufsize 62000', '-maxrate 620k'\
       metaDuration,tDuration,'-f mp4','-movflags','frag_keyframe+empty_moov'
Run Code Online (Sandbox Code Playgroud)

第二次MP4尝试: - > 主要问题(持续时间缩短,视频后期加速)

    '-y','-vcodec libx264','-pix_fmt yuv420p','-b …
Run Code Online (Sandbox Code Playgroud)

streaming ffmpeg h.264 node.js html5-video

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

NodeJS:为模块Fluent-FFMPEG设置FFMPEG二进制文件的路径

我正在构建一个使用模块node-fluent-ffmpeg的应用程序.https://github.com/schaermu/node-fluent-ffmpeg

我正在尝试将ffmpeg二进制文件与我的应用程序一起打包.我想这样做(特别是在Windows上),用户不必手动安装FFMPEG.

可悲的是,我尝试的一切都会导致错误.我尝试过以下方法:

  ffmpeg.setFfmpegPath   : Gives an error saying setFfmpegPath is not a method
Run Code Online (Sandbox Code Playgroud)

和:

  proc.setFfmpegPath    : Gives a createproces error.
Run Code Online (Sandbox Code Playgroud)

看来我做错了什么.有人可以指出我的错误.非常感谢.

ffmpeg path binaries node.js

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

nodejs handeling一个select表单元素

我有一个(可能是非常愚蠢的)问题.我有一个表单,我用Express提交给我的nodeJS服务器.这与文本输入和单选按钮完美配合,但现在我必须添加一个选择.服务器没有给出错误但是没有正确解析select.

我的代码:

<select id="chooselang">
<option value="nl" name="language">NL</option>
<option value="en" name="language">EN</option>
</select> 
Run Code Online (Sandbox Code Playgroud)

我的服务器看起来像这样:

app.post('/settings', function(req, res){
// Fill JSON array with new settings
var myData = {
    ,name  : req.body.name
            ,mail : req.body.email
            ,language : req.body.language
    ,location: req.body.location
}
// Write to JSON file
fs.writeFile(configfilepath, JSON.stringify(myData, null, 4), function(err) {
    if(err) {
        res.send(500);
        console.log(err);
    } else {
        setTimeout(function () {
            res.redirect('back');
        }, 2000)
    }
}); 
});
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我做错了什么吗?

forms select node.js express

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