小编Shl*_*son的帖子

如何安装babel-polyfill库?

我刚刚开始使用Babel将我的ES6 javascript代码编译成ES5.当我开始使用Promises时,看起来它不起作用.Babel网站表示支持通过polyfill承诺.

没有运气,我试图添加:

require("babel/polyfill");
Run Code Online (Sandbox Code Playgroud)

要么

import * as p from "babel/polyfill";
Run Code Online (Sandbox Code Playgroud)

有了这个我将在我的应用程序引导上得到以下错误:

找不到模块'babel/polyfill'

我搜索了模块,但似乎我在这里缺少一些基本的东西.我也尝试添加旧的和好的蓝鸟NPM,但看起来它不起作用.

如何使用Babel的polyfills?

javascript node.js polyfills babeljs babel-polyfill

134
推荐指数
6
解决办法
12万
查看次数

ES6 - 在类中调用静态方法

我有这个类对静态方法进行内部调用:

export class GeneralHelper extends BaseHelper{
     static is(env){
          return config.get('env:name') === env;
     }

     static isProd(){
         return GeneralHelper.is('prod');
     }
 }
Run Code Online (Sandbox Code Playgroud)

我可以使用任何关键字来替换下面一行中的类名:

GeneralHelper.is('prod');
Run Code Online (Sandbox Code Playgroud)

在PHP中也有self,static等ES6是否提供类似这些东西吗?

TY.

javascript oop ecmascript-6

70
推荐指数
3
解决办法
4万
查看次数

ES6 Promises - 像async.each这样的东西?

试图弄清楚如何找到与async.eachSeries完全相同的功能,我需要一个按顺序运行的异步动作列表(不是并行)但是找不到在原生ES6中执行它的方法,任何人都可以建议,请?

ps考虑了发电机/产量,但还没有经验,所以我没有意识到它究竟能帮助我.

编辑1

根据请求,这是一个例子:

假设这段代码:

let model1 = new MongooseModel({prop1: "a", prop2: "b"});
let model2 = new MongooseModel({prop1: "c", prop2: "d"});

let arr = [model1 , model2];
Run Code Online (Sandbox Code Playgroud)

现在,我想在一系列中运行它,而不是并行,所以使用"异步"NPM很容易:

async.eachSeries(arr, (model, next)=>{
    model.save.then(next).catch(next);
}, err=>{
    if(err) return reject(error);
    resolve();
})
Run Code Online (Sandbox Code Playgroud)

我的问题是:使用ES6,我可以原生使用吗?没有NPM'异步'包?

编辑2

使用async/await可以轻松完成:

let model1 = new MongooseModel({prop1: "a", prop2: "b"});
let model2 = new MongooseModel({prop1: "c", prop2: "d"});    

let arr = [model1 , model2];

for(let model of arr){
    await model.save();
}
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous ecmascript-6 es6-promise

26
推荐指数
3
解决办法
6689
查看次数

通过FastCGI使用ExpressJS应用程序

刚开始处理NodeJS网络应用程序并有一个基本问题.

由于我来自PHP领域,我知道PHP有一个内置的HTTP服务器但没有人实际使用它我们使用nginx和史前项目Apache作为HTTP服务器,当我进入ExpressJS我发现所有的例子都在谈论听取ExpressJS打开的HTTP服务器(当然是通过http NodeJS模块),但没有人谈论通过FastCGI(nginx - > FastCGI(例如node-fastcgi) - >我的ExpressJS应用程序)使用它,就像我以前用PHP做的那样(nginx - > PHP-fpm - >我的PHP env)我想知道为什么?

据我所知,NodeJS应用程序是非常快速,非阻塞I/O等等,但是有一个安全漏洞使用应用程序像每个人一样显示,因为运行的服务在JavaScript环境中具有相同的公共资源,一个用户例如,可以错误地(或不错误地)与他人共享敏感信息.让我们假设开发人员犯了这样的错误:

router.post('/set-user-cc', function(res){
    global.user = new User({
        creditCard: req.param('cc')
    });
});
Run Code Online (Sandbox Code Playgroud)

其他用户请求:

router.get('/get-user-cc', funciton(req, res){
    res.json(global.user);
});
Run Code Online (Sandbox Code Playgroud)

此时,每个用户将获得用户的CC信息.

通过FastCGI使用我的ExpressJS应用程序将为每个HTTP请求打开一个干净的JavaScript环境,用户不会互相伤害.

很高兴听到NodeJS(网络)应用程序经验丰富的开发人员为什么没有人建议使用FastCGI解决方案(在Google上搜索并几乎找不到任何东西),如果是这样,为什么它太糟糕了?

(ps这个例子只是为了证明这个问题不是某个人真正做过的事情,但是我们知道宇宙中存在很多愚蠢的人:)

谢谢!

javascript php nginx node.js express

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

使用Webstorm(Babel)进行ES6调试

有webstorm v10,babel文件监视器工作正常,一切都很好.

现在我想调试代码,任何方式调试ES6文件本身或必须在JS输出文件babel编译吗?

请指教.

javascript node.js ecmascript-6 babeljs

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

Youtube iFrame API与modestbranding相比很奇怪:1和showinfo:0

我试图让没有歌曲标题的"干净Youtube播放器","稍后观看"按钮,分享按钮和Youtube标志.

因此,在阅读了playerVars API后,我设置了这个:

new YT.Player('someId', {
    width: 460,
    height: 390,
    playerVars: {
        modestbranding: 1,
        fs: false,
        showinfo: 0,
        disablekb: 1,
        wmode: 'opaque',
        iv_load_policy: 3,
        cc_load_policy: 1,
        html5: 1,
        enablejsapi: 1,
        rel: 0
});
Run Code Online (Sandbox Code Playgroud)

我仍然会在右下角看到YouTube徽标,请看:

在此输入图像描述

如果我删除showinfo: 0徽标消失但随后歌曲标题,"稍后观看"和"分享按钮出现在顶部:

在此输入图像描述

有什么建议我怎么能一次隐藏所有?

谢谢.

youtube iframe youtube-iframe-api

5
推荐指数
0
解决办法
628
查看次数

gRPC DEADLINE_EXCEEDED 即使服务器已启动并且

我有两个微服务进行通信的相互通gRPCA是RPC客户端和B是RPC服务器,包括书面使用的NodeJS GRPC NPM模块。

一切正常,直到在某个时间点意外A停止向 发送请求B,由于超时(5 秒)而失败并抛出此错误:

Error: Deadline Exceeded

这两个微服务都是 Docker 容器,运行在 AWS ECS 上并通过 AWS ELB 进行通信(不是 ALB,因为它不支持 HTTP2 和其他一些问题)。

我试图运行telnetA到的ELB B,无论是从EC2实例,在运行ECS任务(泊坞容器本身)本身和它连接的罚款,但还是在的NodeJS应用程序A不能达到的的NodeJS应用程序B使用GRPC连接.

解决的唯一方法是停止并启动ECS任务,然后再次A成功连接B(直到下一次意外重现相同场景),但这当然不是解决方案。

有没有人遇到过这种问题?

rpc amazon-web-services node.js docker grpc

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

JS匿名函数调用语法

这两者有什么区别:

(function () {
    alert('something');
})();?  # invocation parens after the wrapping parens
Run Code Online (Sandbox Code Playgroud)

(function () {
    alert('something');
}());  # invocation parens inside the wrapping parens
Run Code Online (Sandbox Code Playgroud)

- 给我同样的结果:警告"某事".

javascript

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

Message Broker - 作业之间的依赖关系

我正在尝试找到一个好的队列服务器/消息代理,它可以使我能够将作业推送到队列,而且还可以:

  1. 建立作业之间的依赖关系(例如,仅在作业 A 完成后运行作业 B)
  2. 如果订阅者执行失败,则允许重新运行任务(不将其从订阅者推回队列)
  3. 持久性(在服务器重新启动等情况下)
  4. 扩展(在服务器负载的情况下能够添加更多节点)
  5. 优势:AWS 中的托管解决方案

我知道很多名字,比如 RabbitMQ、ActiveMQ、Kafka,但我想听到现实生活中的经验,而不仅仅是我已经读过的文章。

activemq-classic rabbitmq amazon-sqs messagebroker apache-kafka

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

Google Analytics 4 和 hitCallback

以前使用Universal Google Analytics时,我有时会在跟踪自定义事件时使用发送hitCallback函数的选项:

ga('send', {
    hitType: 'event',
    eventCategory: 'Some Category',
    eventAction: 'Some Action',
    eventLabel: 'Some Label',
    eventValue: 'Some Value',
    hitCallback() {
        console.log('event sent for sure!');
    }

});
Run Code Online (Sandbox Code Playgroud)

这使我能够确保事件已被跟踪,以防我之后重定向到另一个页面。

我正在尝试找到一种方法来使用 Google Analytics 4 执行此操作,但无法找到发送到gtag('event' ...)该参数的标准参数来执行相同的操作。

这是至关重要的,因为根据我的经验,许多事件由于重定向而丢失,特别是注册或登录等重要事件。

google-analytics google-analytics-4

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