小编mai*_*mic的帖子

如何运行启用ES6功能的Node.js应用程序?

我用的是需要挂钩BabelJS(原名6to5)与运行节点的应用程序es6features:

// run.js
require("babel/register");
require("./app.js6");
Run Code Online (Sandbox Code Playgroud)

我打电话node run.js来运行我的app.js6.我需要安装BabelJS并提供run.js每个我想使用es6features项目.我更喜欢这样的电话nodejs6 app.js6.如何独立实现此系统(Unix和Windows)?

javascript node.js ecmascript-6 babeljs

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

TypeScript:如何为已安装的npm包定义自定义类型?

我喜欢在TypeScript中使用rx-node

import RxNode from 'rx-node';
Run Code Online (Sandbox Code Playgroud)

我使用npm 安装了rx-node

$ npm install rx-node --save
Run Code Online (Sandbox Code Playgroud)

我搜索了类型定义,但没有任何结果

$ typings search rx-node
No results found for search
Run Code Online (Sandbox Code Playgroud)

如何为已安装的npm模块rx-node定义自定义类型定义?我应该在哪里存储类型定义文件?如何配置TypeScript(tsconfig.jsontypings.json)?

编辑:感谢Aleksey L.David Bohunek,我实现了定义rx-node.d.ts如下所示

declare module "rx-node" {
  import {Observable} from '@reactivex/rxjs';
  import {ReadLine} from "readline";

  function fromReadLineStream(stream: ReadLine): Observable<string>
}
Run Code Online (Sandbox Code Playgroud)

我安装了@activex/rxjs

npm install --save @reactivex/rxjs
Run Code Online (Sandbox Code Playgroud)

因为我收到了错误

node_modules\@reactivex\rxjs\dist\cjs\Observable.d.ts (10,66): Cannot find name 'Promise'. (2304)
Run Code Online (Sandbox Code Playgroud)

我将tsconfig.json中的目标更改es6.

node.js typescript typescript1.8

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

将数组传递给ParamArray

是否可以将数组的所有元素传递给ParamArray?

例如,我想将ParamArray传递给另一个ParamArray:

Sub test()
    p1 "test", "banane", "birne"
End Sub

Sub p1(ParamArray keys() As Variant)
    p2 keys 'should be the same as: p2 "test", "banane", "birne"
End Sub

Sub p2(ParamArray keys() As Variant)
    Dim key As Variant
    For Each key In keys
        Debug.Print key 'Run-time error '13' Type mismatch (key is an array)
    Next key
End Sub
Run Code Online (Sandbox Code Playgroud)

在这种情况下,ParamArray p2不包含元素keys,但它获取数组对象keys.因此,我必须检查,如果传递数组:

Sub test()
    p1 "test", "banane", "birne"
    p2 "test", "banane", "birne"
End Sub

Sub p1(ParamArray keys() As …
Run Code Online (Sandbox Code Playgroud)

parameters vba parameter-passing paramarray

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

如何在Google Chrome DevTools的lambda调用中设置断点?

我使用启用了JavaScript源地图的Babel和Google Chrome开发者工具.鉴于此代码

function myFunc(elements) {
  return elements
    .map(element => element.value)
    .filter(value => value >= 0);
}
Run Code Online (Sandbox Code Playgroud)

如何在执行lambda函数时暂停执行element => element.value?如果我在.map(element => element.value)它的行设置一个断点,它只会在执行map时暂停,但不会在执行lambda函数时暂停.

javascript lambda breakpoints google-chrome-devtools source-maps

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

推迟Haskell中的行动

我想推迟采取行动.因此,我使用的WriterT应该记住我的行为tell.

module Main where

import Control.Exception.Safe
       (Exception, MonadCatch, MonadThrow, SomeException,
        SomeException(SomeException), catch, throwM)
import Control.Monad.IO.Class (MonadIO, liftIO)
import Control.Monad.Trans.Writer (WriterT, runWriterT, tell)

type Defer m a = WriterT (IO ()) m a

-- | Register an action that should be run later.
defer :: (Monad m) => IO () -> Defer m ()
defer = tell

-- | Ensures to run deferred actions even after an error has been thrown.
runDefer :: (MonadIO m, MonadCatch m) …
Run Code Online (Sandbox Code Playgroud)

haskell exception-handling monad-transformers

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

从节点脚本获取已安装的 npm 版本?

我在构建脚本中检查全局安装的 Node 版本:

var semver = require('semver');
var packageJson = require('./package.json');
var expectedVersion = packageJson.engines.node;

var actualVersion = process.version;
if (semver.neq(expectedVersion, actualVersion)) {
  fail('Incorrect Node version: expected ' + expectedVersion + ', but was ' + actualVersion);
}
Run Code Online (Sandbox Code Playgroud)

我想以类似的方式检查全局安装的 npm 版本。如何检索全局安装的 npm 版本?

node.js npm

10
推荐指数
2
解决办法
2127
查看次数

阻止执行特定的内联脚本标记

我正在尝试为Tampermonkey编写脚本,以防止执行特定的内联脚本标签。页面的主体看起来像这样

<body>
  <!-- the following script tag should be executed-->
  <script type="text/javascript">
    alert("I'm executed as normal")
  </script>
  <!-- the following script tag should NOT be executed-->
  <script type="text/javascript">
    alert("I should not be executed")
  </script>
  <!-- the following script tag should be executed-->
  <script type="text/javascript">
    alert("I'm executed as normal, too")
  </script>
</body>
Run Code Online (Sandbox Code Playgroud)

我试图script使用Tampermonkey脚本删除该标签,但是如果我在上运行它 document-startdocument-bodyscript标签尚不存在。如果我在运行它,document-end或者要删除document-idlescript标签在执行Tampermonkey脚本之前运行。

如何防止执行script标签?


注意:script我要阻止执行的实际标签包含window.location = 'redirect-url'。因此,在这种情况下,防止重新加载也就足够了。


版本: …

html javascript tampermonkey

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

RxJS:生产者 - 消费者中止

我在RxJS中遇到了一个特殊的生产者消费者问题:生产者慢慢生产元素.消费者正在请求元素,并且经常必须等待生产者.这可以通过压缩生产者和请求流来实现:

var produce = getProduceStream();
var request = getRequestStream();

var consume = Rx.Observable.zipArray(produce, request).pluck(0);
Run Code Online (Sandbox Code Playgroud)

有时请求会中止.生成的元素只应在未中止请求后使用:

produce:  -------------p1-------------------------p2--------->
request:  --r1--------------r2---------------r3-------------->
abort:    ------a(r1)------------------a(?)------------------>
consume:  ------------------c(p1, r2)-------------c(p2, r3)-->
Run Code Online (Sandbox Code Playgroud)

第一个请求r1将使用第一个生成的元素p1,但在它可以消耗之前r1被中止.生成并在第二次请求时消耗.第二次中止被忽略,因为之前没有发出未答复的请求.第三个请求必须等待下一个生成的元素,并且在生成之前不会中止.因此,在生产后立即消耗.a(r1)p1p1c(p1, r2)r2a(?)r3p2p2p2c(p2, r3)

我怎样才能在RxJS中实现这一目标?

编辑: 我创建了一个例子与jsbin一个QUnit测试.您可以编辑该功能createConsume(produce, request, abort)以尝试/测试您的解决方案.

该示例包含先前接受的答案的函数定义.

javascript reactive-programming reactive-extensions-js rxjs

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

Vagrant ssh 到 Docker 容器

我在 Vagrant 盒子 boot2docker 中将 Drupal 作为 Docker 容器运行(在 Windows 8.1 上):

Vagrantfile(我的 Docker 容器)

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.provider "docker" do |docker|
    docker.vagrant_vagrantfile = "host/Vagrantfile"
    docker.image = "drupal"
    docker.ports = ['80:80']
    docker.name = 'drupal-container'
  end
  config.vm.synced_folder ".", "/vagrant", type: "smb", disabled: true
end
Run Code Online (Sandbox Code Playgroud)

主机/Vagrantfile(主机)

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.hostname = "docker-host"
  config.vm.box = "hashicorp/boot2docker"
  config.vm.network "forwarded_port", guest: 80, host: …
Run Code Online (Sandbox Code Playgroud)

ssh drupal vagrant docker boot2docker

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

How to type pipe function using variadic tuple types in TypeScript 4?

The example of the release notes of TypeScript 4 shows how to use variadic tuple types to avoid several overload definitions. I guess it should be possible to type this pipe function for an arbitrary amount of arguments

type F<P, R> = (p: P) => R

type Pipe2<T1, T2, R> = [F<T1, T2>, F<T2, R>]
type Pipe3<T1, T2, T3, R> = [F<T1, T2>, ...Pipe2<T2, T3, R>]
type Pipe4<T1, T2, T3, T4, R> = [F<T1, T2>, ...Pipe3<T2, T3, T4, R>]

function …
Run Code Online (Sandbox Code Playgroud)

typescript

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