小编Sam*_*ams的帖子

如何将本地模块指定为npm包依赖项

我有一个应用程序,它对依赖项下的package.json文件中指定的第三方模块(例如'express')具有通常的依赖关系.例如

"express"     : "3.1.1"
Run Code Online (Sandbox Code Playgroud)

我想模块化地构建我自己的代码,并且有一组本地(意思是我当前在文件系统上)的模块由package.json安装.我知道我可以通过运行来安装本地模块:

npm install path/to/mymodule
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何通过package.json依赖项结构实现这一点.使用--save此命令中的选项只是放入"mymodule": "0.0.0"我的package.json(不引用文件路径位置).如果我然后从node_modules中删除已安装的版本,并尝试从package.json重新安装,它将失败(因为它在中央注册表中查找"mymodule",并且看起来不是本地的).

我确信这是一种告诉"dependencies": {}结构我希望从文件系统路径安装它的方法,但不知道如何.

还有其他人有这个问题吗?谢谢.

node.js npm

221
推荐指数
7
解决办法
19万
查看次数

PHP:混淆使用构造数组的反射方法或版本5.4中的func_get_args()之间的差异

这是PHP 5.4中关于通过引用传递对象的一个​​非常优秀的案例,其中获取此错误:

PHP Warning:  Parameter 1 to A::foo() expected to be a reference, value given
Run Code Online (Sandbox Code Playgroud)

但仅作为复合效应:

  • 使用反射将继承的方法设置为"可访问",
  • 并且该方法采用显式引用参数(&argument sig)
  • 然后使用func_get_args()调用它,而不是手动构造args数组.

不知道为什么这些东西都会导致这种行为或是否应该.

需要注意的是,PHP 5.5中不存在此效果.

这是导致上述错误的代码,但是如果你COMMENT THIS LINE对代码运行正常注释(例如,对象被正确传递给'foo'函数):

class A {
    private function foo(&$arg1) {
        var_dump('arg1: ', $arg1);
    }   
}

class B extends A {
    public function bar() {
        $x = new stdClass();
        $x->baz = 'just a value';
        $this->callPrivate($x);
    }

    private function callPrivate($x)
    {
        $method = new \ReflectionMethod(
            'A',
            'foo'
        );

        //* for some reason, the private function needs to …
Run Code Online (Sandbox Code Playgroud)

php

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

在Java中,如何从Resteasy验证中返回有意义的JSON格式错误?

我在请求/响应主体中有一个RESTFul API消耗/返回JSON.当客户端发送无效数据(有效的JSON但字段的值无效)时,我希望能够返回JSON结构(以及相关的400+代码).

然后,该结构将允许前端在每个字段的基础上解析错误,并在输入字段旁边呈现错误.

例如理想输出:

{
  "errors":{
    "name":["invalid chars","too long","etc"]
    "otherfield":["etc"]
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Resteasy作为API,并且使用违规异常很容易让它呈现JSON错误:

@Provider
@Component
public class ValidationExceptionHandler implements ExceptionMapper<ResteasyViolationException> {
    public Response toResponse(ResteasyViolationException exception) {
        Multimap<String,String> errors = ArrayListMultimap.create();

        Consumer<ResteasyConstraintViolation> consumer = (violation) -> {
            errors.put(violation.getPath(), violation.getMessage());
        };

        exception.getParameterViolations().forEach(consumer);

        Map<String, Map<String, Collection<String>>> top = new HashMap<>();

        top.put("errors", errors.asMap());

        return Response.status(Status.BAD_REQUEST).entity(top)
                .build();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,错误路径(violation.getPath())是以属性为中心而不是以XmlElement-name为中心的.

例如以上输出:

{
  "errors":{"createCampaign.arg1.name":["invalid chars","etc"]}
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试从最后一个点回来剥离索引以获得"名称"但是该黑客还存在其他问题.

例如,如果我的"名称"属性不是"名称",则它不起作用:

@XmlElement(name="name")
@NotNull
private String somethingelse;
Run Code Online (Sandbox Code Playgroud)

"somethingelse"将返回给客户,但他们的客户不知道那是什么:

{
  "errors":{"somethingelse":["cannot be null"]}
}
Run Code Online (Sandbox Code Playgroud)

客户端需要"名称",因为这是在发送字段时调用的字段.

我的资源:

package com.foo.api;

import …
Run Code Online (Sandbox Code Playgroud)

java rest json web-services resteasy

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

来自变量的JS默认参数值:为什么必须标识符不同?

指定使用变量名称相同的默认值扔引用错误:

var a = 'adef';
var x = (a=a) => console.log(a);
x();
=> "ReferenceError: a is not defined"
Run Code Online (Sandbox Code Playgroud)

但这很好:

var other = 'otherdef';
var x = (a=other) => console.log(a);
x();
=> "otherdef"
Run Code Online (Sandbox Code Playgroud)

我的假设是,价值a在外部范围将被分配到新的范围.

我已经尝试使用const代替var,和class/ function代替箭头功能,但结果总是相同的(在铬63和节点6测试).

我有一种感觉的问题是,a在分配过程中"升起"等分配指的是新的"A"(其存在,但未定义)...

javascript variable-assignment ecmascript-6

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

如何以编程方式运行/调用 Flask cli 命令?

我使用 python 3 和flask,以及flask-migrate(使用alembic)来处理我的SQL 迁移。当我运行本地集成测试时,我想每次都重建数据库,这样我就可以针对我正在测试的每个 api 调用的干净数据库运行我的 API 调用(是的,我可以使用 sqlite,但我想检查约束是否正确) )。

我可以在命令行上轻松执行以下操作:

mysql -uroot -e 'drop database DBNAME; create database DBNAME;'
FLASK_APP=flask_app.py flask db upgrade
Run Code Online (Sandbox Code Playgroud)

但我宁愿在 python 代码中运行它,原因有两个:

  1. 我不想担心 mysql 客户端安装在 CI 机器上(最终)运行此代码(它们应该只需要 python mysql 包)。
  2. 我想操作 Flask 设置来强制数据库名称以避免意外(因此它需要在与调用它的脚本相同的线程/内存空间中运行)。

app对象(使用 创建app = Flask(__name__))有一个cli属性,但它需要一个上下文对象,而且感觉我使用的工具不正确。我预期app.cli.invoke('db', 'upgrade')或类似...

关于如何在没有子 cli 进程的情况下从代码调用 Flask 命令有什么建议吗?

python database-migration flask alembic flask-migrate

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