javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

node.js-UNIX系统的样式少的Markdown查看器

我在JavaScript中有一个Markdown字符串,我想在less(或者,我想是more)样式的命令行查看器中显示它(带有粗体等)。

例如,使用字符串

"hello\n" + 
"_____\n" + 
"*world*!"

我想弹出带有类似以下内容的可滚动内容的输出

你好

世界

这有可能吗?

trans by 2020-01-24T09:22:47Z

javascript-在异步函数外使用await

我试图将两个异步函数链接在一起,因为第一个具有条件返回参数,导致第二个运行或退出模块。 但是,我发现规格中找不到奇怪的行为。

async function isInLobby() {
    //promise.all([chained methods here])
    let exit = false;
    if (someCondition) exit = true;
}

这是我的代码的混帐摘要(您可以在此处看到完整的范围),它只是检查玩家是否已经在大厅中,但这无关紧要。

接下来,我们有这个异步功能。

async function countPlayer() {
    const keyLength = await scardAsync(game);
    return keyLength;
}

如果await,则不需要运行此功能。

我试着做

const inLobby = await isInLobby();

我希望这会等待结果,因此我可以使用await有条件地运行async,但是我收到没有具体细节的类型错误。

为什么await async函数不在功能范围之外? 我知道这是一个糖承诺,因此必须将其链接到then,但是为什么在countPlayer中我可以等待另一个承诺,但是在外面,我却不能await isInLobby

trans by 2020-01-24T06:48:15Z

node.js-ReferenceError:未定义webpack

在我的webpack应用程序中,我有一个基本的构建过程,该过程由“ npm run build”触发,该过程执行webpack二进制文件并将/ app中的index.html复制到/ dist。 每当我运行npm run build时,我都会得到ReferenceError: webpack is not defined,但是当我运行npm start,这将启动webpack-dev-server时,一切都很好。

这是我的webpack配置文件:

var ExtractTextPlugin = require('extract-text-webpack-plugin');

var config = {
    context: __dirname + '/app',
    entry: './index.js',
    output: {
        path: __dirname + '/app',
        filename: 'app.js'
    },
    module: {
        loaders: [
            { test: /\.js$/, loader: 'babel', exclude: /node_modules/ },
            { test: /\.html$/, loader: 'raw', exclude: /node_modules/ },
            { test: /\.scss$/, loader: ExtractTextPlugin.extract('style', 'css!sass'), exclude: /node_modules/}
        ]
    },
    plugins: [
        new ExtractTextPlugin('app.css')
    ]
};

if (process.env.NODE_ENV == 'production') {
    config.output.path = __dirname + '/dist';
    config.plugins.push(new webpack.optimize.UglifyJsPlugin());
}

module.exports = config;
trans by 2020-01-24T01:18:30Z

javascript-npm出现“无法读取依赖项”错误

我想启动一个Node应用程序,并使用教程创建了package.json文件。 这是json文件:

{
    "name": "Dashboard",
    "version": "0.0.0",
    "description": "Client-A Dashboard",
    "dependencies": {
        "socket.io": "latest",
        "express": "latest",
        "jade": "latest"
    },
    "author": "tD"
}

在尝试运行JSON文件之前,我已经对其进行了验证,但是在运行npm install命令时,仍然收到错误消息:

npm ERR! install Couldn't read dependencies
npm ERR! Error: ENOENT, open 'C:\projects\Client-A\Live\package.json'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files (x86)\\nodejs\\\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd C:\projects\Client-A\Live\
npm ERR! node -v v0.8.22
npm ERR! npm -v 1.2.14
npm ERR! path C:\projects\Client-A\Live\package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\projects\Client-A\Live\npm-debug.log
npm ERR! not ok code 0

这是npm-debug.log文件

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files (x86)\\nodejs\\\\node.exe',
1 verbose cli   'C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'install' ]
2 info using npm@1.2.14
3 info using node@v0.8.22
4 verbose node symlink C:\Program Files (x86)\nodejs\\node.exe
5 verbose read json C:\projects\Client-A\Live\package.json
6 error install Couldn't read dependencies
7 error Error: ENOENT, open 'C:\projects\Client-A\Live\package.json'
8 error If you need help, you may report this log at:
8 error     <http://github.com/isaacs/npm/issues>
8 error or email it to:
8 error     <npm-@googlegroups.com>
9 error System Windows_NT 6.1.7601
10 error command "C:\\Program Files (x86)\\nodejs\\\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
11 error cwd C:\projects\Client-A\Live\scoreboard
12 error node -v v0.8.22
13 error npm -v 1.2.14
14 error path C:\projects\Client-A\Live\package.json
15 error code ENOENT
16 error errno 34
17 verbose exit [ 34, true ]
trans by 2020-01-24T00:28:32Z

node.js-术语“ ng”未被识别为cmd的名称

今天,在学习一些基本的AngularJS Intro时,我遇到了一个问题。 我打开PowerShell进行该项目。 NPM工作了。

我能够使用安装Angular

npm install -g @angular/cli

每当我尝试运行ng时,我都会得到

the term 'ng' is not recognized as the name of a cmdlet
trans by 2020-01-23T20:30:58Z

node.js-猫鼬:CastError:在路径“ _id”处,值“ [object Object]”的强制转换为ObjectId失败

我是node.js的新手,所以我觉得这将是我忽略的愚蠢之举,但是我一直无法找到解决问题的答案。 我想做的是创建一个路径,该路径将创建一个新的子对象,将其添加到父对象的子对象数组中,然后将该子对象返回给请求者。 我遇到的问题是,如果我将字符串ID传递给findById,节点将崩溃

TypeError:对象{}没有方法“ cast”

如果我尝试传递一个ObjectId,我得到

CastError:在路径“ _id”处,值“ [object Object]”的转换为ObjectId失败

这是我的代码的粗略概述:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId; //Have also tried Schema.Types.ObjectId, mongoose.ObjectId

mongoose.connect('mongodb://user:password@server:port/database');

app.get('/myClass/:Id/childClass/create', function(request, result) {
  var id = new ObjectId(request.params.Id);
  MyClass.findById(id).exec( function(err, myClass) {
    if (err || !myClass) { result.send("error: " + err + "<br>" + JSON.stringify(id) || ("object '" + request.params.Id + "' not found: " + id)); return; }
    var child = ChildClass();
    myClass.Children.addToSet(child);
    myClass.save();
    result.send(child);
  });
});

如果我使用路径“ / myClass / 51c35e5ced18cb901d000001 / childClass / create”执行此代码,则这是代码的输出:

错误:CastError:在路径“ _id”中,值“ [object Object]”的转换为ObjectId失败   {“ path”:“ 51c35e5ced18cb901d000001”,“ instance”:“ ObjectID”,“ validators”:[],“ setters”:[],“ getters”:[],“ _ index”:null}

我尝试使用findOne并传入{_id:id},但这似乎正是findById所做的。 我尝试了其他站点上列出的ObjectId的不同类。 我试过像函数而不是构造函数那样调用ObjectId(),并且返回undefined。 在这一点上,我的想法不多了,似乎谷歌搜索一个答案似乎没有帮助。 关于我在做什么错的任何想法吗?

另外,就像我说的那样,我是node / Mongo / Mongoose / Express的新手,所以如果有更好的方法可以实现我的目标,请告诉我。 我感谢所有反馈。

编辑:

经过Peter Lyons的解决方法后,我用谷歌搜索了我遇到的另一个错误,并找到了findByIdAndUpdate,它可以按预期运行,并且完全符合我的期望。 我仍然不确定为什么findById和findOne会给我这样的问题,并且我很想知道(也许需要提交错误报告),所以我会在其他人有答案的情况下保持此状态。

trans by 2020-01-23T19:07:14Z

javascript-如何在阻塞的nodejs中创建睡眠/延迟?

我目前正在尝试学习nodejs,而我正在做的一个小项目正在编写一个API,以控制一些联网的LED灯。

控制LED的微处理器具有处理延迟,我需要将发送给微控制器的命令间隔至少100毫秒。 在C#中,我习惯于仅调用Thread.Sleep(time),但在node中没有找到类似的功能。

我发现了在节点中使用setTimeout(...)函数的几种解决方案,但是,这是异步的并且不会阻塞线程(这是我在此方案中需要的)。

有人知道阻塞睡眠或延迟功能吗? 最好是不只是旋转CPU并具有+ -10毫秒的精度?

trans by 2020-01-23T16:31:48Z

javascript-在单个Express应用程序上侦听HTTP和HTTPS

是否可以创建具有相同路由和相同中间件的,同时侦听HTTP和HTTPS的Express服务器?

目前,我使用HTTP上的Express进行此操作,并使用隧道将HTTPS隧道传输到Express,但是我更喜欢纯Node解决方案。

我可以使用以下代码来执行此操作,但是可以使用标记为私有的handle方法:

var express = require( 'express' )
    , https = require("https")
    , fs = require( 'fs' );

var app = express.createServer();
// init routes and middlewares
app.listen( 80 );

var privateKey = fs.readFileSync( 'privatekey.pem' ).toString();
var certificate = fs.readFileSync( 'certificate.pem' ).toString();
var options = {key: privateKey, cert: certificate};
https.createServer( options, function(req,res)
{
    app.handle( req, res );
} ).listen( 443 );
trans by 2020-01-23T15:08:11Z

node.js-避免在弹性bean中重建node_modules

我们有一个相当简单的node.js应用程序,但是由于AWS Elastic Beanstalk部署机制,即使在提交单个文件后,也需要大约5分钟才能推出新版本(通过npm install)。

即 提交本身(和上载)的速度很快(仅可推送1个文件),但是Elastic Beanstalk从S3获取整个软件包,将其解压缩并运行npm install,这导致node-gyp编译某些模块。 安装/构建完成后,Elastic Beanstalk会擦除/var/app/current并将其替换为新的应用程序版本。

不用说,恒定的node_modules重建是不必要的,在我的旧Macbook Air上重建需要30秒,而在ec2.micro实例上重建需要5分钟以上,这并不有趣。

我在这里看到两种方法:

  1. 调整npm install并使用node_modules位置来避免将其删除并在部署时进行重建。
  2. 在Elastic Beanstalk EC2实例上设置git repo并基本上自己重新编写部署过程,因此/ var / app / current接收推送并仅在必要时运行npm install(这使Elastic Beanstalk看起来像OpsWorks。)

这两个选项都缺乏宽容,并且在Amazon更新其Elastic Beanstalk挂钩和体系结构时容易出现问题。

也许有人有一个更好的主意,如何避免不断重建应用目录中已经存在的node_modules? 谢谢。

trans by 2020-01-23T09:40:07Z

javascript-npm WARN不推荐使用graceful-fs@3.0.8:graceful-fs版本3

我正在运行npm install,但这给我一个错误。 我还尝试在更新之前在命令下运行。 $ npm安装npm,我也更新了graceful-fs。

$ npm install -g graceful-fs
graceful-fs@4.1.3 C:\Users\RDY672\AppData\Roaming\npm\node_modules\graceful-fs

错误如下:

$ npm install -g bower@1.3.12
npm WARN deprecated graceful-fs@3.0.8: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
npm WARN deprecated graceful-fs@2.0.3: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
npm WARN deprecated npmconf@2.1.2: this package has been reintegrated into npm and is now out of date with respect to npm
npm ERR! cb() never called!
npm ERR! not ok code 0
trans by 2020-01-23T06:04:42Z

node.js-Bootstrap中的Grunt依赖项冲突

我已经从官方网站上下载了Bootstrap源文件,并且在使用节点的npm install -g grunt-cli安装项目时遇到了依赖冲突。我的机器上安装了npm install,但是一些bootstrap依赖需要0.4.0和一些0.4.1

npm install -g grunt-cli命令执行没有任何问题。 这是我执行npm install命令后得到的日志:

npm ERR! peerinvalid The package grunt does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer grunt-banner@0.2.1 wants grunt@~0.4.1
npm ERR! peerinvalid Peer grunt-contrib-clean@0.5.0 wants grunt@~0.4.0
npm ERR! peerinvalid Peer grunt-contrib-concat@0.3.0 wants grunt@~0.4.0
npm ERR! peerinvalid Peer grunt-contrib-connect@0.6.0 wants grunt@~0.4.0
npm ERR! peerinvalid Peer grunt-contrib-copy@0.5.0 wants grunt@~0.4.0
npm ERR! peerinvalid Peer grunt-contrib-csslint@0.2.0 wants grunt@~0.4.0
npm ERR! peerinvalid Peer grunt-contrib-cssmin@0.7.0 wants grunt@~0.4.1
npm ERR! peerinvalid Peer grunt-contrib-jade@0.9.1 wants grunt@~0.4.1
npm ERR! peerinvalid Peer grunt-contrib-jshint@0.8.0 wants grunt@~0.4.0
npm ERR! peerinvalid Peer grunt-contrib-less@0.9.0 wants grunt@~0.4.0
npm ERR! peerinvalid Peer grunt-contrib-qunit@0.4.0 wants grunt@~0.4.0
npm ERR! peerinvalid Peer grunt-contrib-uglify@0.3.3 wants grunt@~0.4.0
npm ERR! peerinvalid Peer grunt-contrib-watch@0.5.3 wants grunt@~0.4.0
npm ERR! peerinvalid Peer grunt-csscomb@2.0.1 wants grunt@~0.4.2
npm ERR! peerinvalid Peer grunt-exec@0.4.3 wants grunt@~0.4
npm ERR! peerinvalid Peer grunt-html-validation@0.1.13 wants grunt@~0.4.1
npm ERR! peerinvalid Peer grunt-jekyll@0.4.1 wants grunt@~0.4.1
npm ERR! peerinvalid Peer grunt-jscs-checker@0.3.2 wants grunt@0.4.2
npm ERR! peerinvalid Peer grunt-saucelabs@5.0.1 wants grunt@~0.4.1
npm ERR! peerinvalid Peer grunt-sed@0.1.1 wants grunt@~0.4

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd C:\Users\\Desktop\bootstrap-3.1.1
npm ERR! node -v v0.10.15
npm ERR! npm -v 1.3.5
npm ERR! code EPEERINVALID
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\Users\\Desktop\bootstrap-3.1.1\npm-debug.log
npm ERR! not ok code 0

我正在按照以下安装步骤进行操作。

如何干净地安装此项目,没有任何错误?

trans by 2020-01-23T05:13:16Z

javascript-package.json中的根目录

我的问题与我想作为NPM模块发布的现有库有关。 该库已在使用中,目前已通过本地文件系统使用"files"d。

如何指定模块文件的根目录?

如果我有一个像这样的结构:

.
├── package.json
├── src
|   ├── js
|   └────── lib
|   └───────── my
|   └───────────── thing.js
|   └───────────── that.js

如何指定模块和可访问文件的根目录为"files"

我想从外部项目中使用以下内容:

var thing = require('my/thing'),
    that = require('my/that');

我在package.json中看到了"files"属性,这是正确的方法吗?

trans by 2020-01-23T00:07:58Z

node.js-我可以获取node --inspect以自动打开Chrome

在新版本的节点中,node-inspector是内置的,可以使用命令node --inspect index.js触发。但是,这始终为命令行提供必须插入地址栏的地址。 我知道这可能不是最“安全”的方法,但是有没有办法消除复制和粘贴步骤呢?

trans by 2020-01-22T19:54:35Z

路径-在Node.js中获取父目录名称

我正在使用Node.js,并且想获得父目录的名称文件。 我有文件../test1/folder1/FolderIWant

我想得到../test1/folder1/FolderIWant

我试过了:

var path = require('path');
var parentDir = path.dirname(filename);

但它返回../test1/folder1/FolderIWant

trans by 2020-01-22T10:15:17Z

javascript-箭头函数“期望表达”语法

我想转换这段代码:

var formatQuoteAmount = function (tx) {
    return Currency.toSmallestSubunit(tx.usd, 'USD');
};
var quoteAmounts = res.transactions.map(formatQuoteAmount);

进入匿名箭头功能。 我写了这个:

var quoteAmounts = res.transactions.map(tx => Currency.toSmallestSubunit(tx.usd, 'USD'));

我在箭头处收到node v5.3.0语法错误。 我在这里查找了默认语法,似乎我的代码的语法是正确的。 任何想法可能是什么问题?

我使用以下语法:

    var quoteAmounts = res.transactions.map(function (tx) {
        return Currency.toSmallestSubunit(tx.usd, 'USD')
    });

但我想使其具有箭头功能的单线。

node v5.3.0上运行

trans by 2020-01-21T23:46:13Z

http-将响应分块时获取整个响应正文?

我正在发出HTTP请求并侦听“数据”:

response.on("data", function (data) { ... })

问题在于响应是分块的,因此“数据”只是发送回的一部分内容。

我如何将全身退回?

trans by 2020-01-21T23:38:39Z

javascript-如何在webpack中使用moment-timezone?

在使用webpack构建项目时,我通常需要npm模块中的CommonJS中的模块。 我在我的项目中需要moment-timezone,但是在构建包时,您还必须从moment-timezone构建所有数据,这可能会很多。

此外,生成失败并出现以下错误:

ERROR in ./~/moment-timezone/data/packed/latest.json
Module parse failed: /site/node_modules/moment-timezone/data/packed/latest.json Line 2: Unexpected token :
You may need an appropriate loader to handle this file type.
| {
|   "version": "2015a",
|   "zones": [
|       "Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q",
@ ./~/moment-timezone/index.js 4:15-51

在这一点上,我对构建失败的担心程度不高,如果构建成功,我将关注构建的大小。 虽然,显然失败的构建也需要在某个时候解决。

我将不胜感激如何处理此问题的任何指针,尤其是如果你们中的任何一个在使用webpack时也遇到了同样的问题(或者也可能是browserify)。

trans by 2020-01-21T23:09:27Z

node.js-在JSHin中禁用有关“ require”功能的警告

我正在为Node.js编写一些代码,目前正在使用JSHint来检查我的代码。 但是,当我使用require函数导入模块时,它说:

'require'未定义。

如何抑制警告?

"use strict";
var express = require('express');   
var register = require('./routes/register');
trans by 2020-01-21T16:31:42Z

node.js-节点8的推荐打字稿配置

如果要使用节点8编译源,建议为打字稿配置什么?

大多数教程使用以下tsconig.json:

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs"
  }
}

但是现在我发现,并非所有可用功能都受支持。 例如target引发错误:类型'string []'不存在属性'includes'。

我发现了一个解决此问题的问题。 解决方法是使用库target。我可以覆盖默认库:lib

但是我不确定这是否是节点8的最佳配置-该库不支持更多功能吗? 是否定义了很多功能?

所以我的问题是:如果要使用节点8,则targetlibmodule的最佳配置是什么?

trans by 2020-01-21T10:20:15Z

javascript-在node.js中生成并杀死进程

我正在尝试在javascript中生成一个进程,并在一段时间后将其杀死(出于测试目的)。

最后,该过程将是一个无限循环,我需要在指定的时间使用不同的参数重新启动,因此我认为生成该过程并杀死它是执行此操作的最佳方法。

我的测试代码是:

var spawn=require('child_process').spawn
, child=null;

child=spawn('omxplayer', ['test.mp4'], function(){console.log('end');}, {timeout:6000});
console.log('Timeout');
setTimeout(function(){
    console.log('kill');
    child.kill();
}, 1200);

child.stdout.on('data', function(data){
    console.log('stdout:'+data);
});

child.stderr.on('data', function(data){
    console.log('stderr:'+data);
});

child.stdin.on('data', function(data){
    console.log('stdin:'+data);
});

结果是:

#~$ node test.js
Timeout
kill

但是我仍然需要发送ctrl + C来结束程序。 我想念什么?

在Raspbian的节点0.10.17上,omxplayer是二进制文件(视频播放器)。

我试过了:

  • 已将ps添加到该应用。
  • 以root身份启动。
  • 子进程的标准输入暂停。 在kill命令中使用所有与终止相关的信号。

在应用运行时,我还启动了ps命令:

2145    bash
2174    node
2175    omxplayer
2176    omxplayer.bin
2177    ps

所以omxplayer是一个包装器,结束时谁不会杀死它的子进程,有什么方法可以获取包装后的进程的pid吗?

仍然咬灰尘,尝试了这个:

spawn('kill', ['-QUIT', '-$(ps opgid= '+child.pid+')']);

我以为会杀死omxplayer的所有子级,我不知道使用这样的spawn是错误的还是代码不起作用。

我所做的最后一个编辑是一个很好的答案,但是必须进行一些编辑。

我创建了一个sh文件(具有执行权限),如下所示:

PID=$1
PGID=$(ps opgid= "$PID")
kill -QUIT -"$PGID"

我是这样开始的:

execF('kill.sh', [child.pid], function(){
    console.log('killed');
});

而不是child.kill

我不确定这是否是最好的方法,也不确定代码是否干净,但是确实有效。

我会接受任何更干净或更有效的答案,而不必执行文件。

trans by 2020-01-21T10:04:22Z