小编jon*_*wig的帖子

npm package.json主要和项目结构

我有一个关于npm和主要领域的问题.我看到了文档,根据我的理解,我指出主要是与./index.js不同的入口点.我已经测试了所有dist文件都在根文件夹中的包.我在包装阶段使用.npmignore忽略了src和测试,但我不喜欢构建和打包项目以验证结构将所有文件打包到包根文件夹中.所以我改变输出为dist.

如果我使用npm pack并解压缩文件,我会得到以下结构:

/
dist
  -- index.js
  -- moduleA
    -- index.js
package.json
README.md
Run Code Online (Sandbox Code Playgroud)

所以这么好.但是现在我被迫按如下方式导入它:

import {moduleA} from "myNpmModule/dist/moduleA";
Run Code Online (Sandbox Code Playgroud)

但我不想在我的导入中有dist文件夹.所以我在package.json中设置main

"main": "dist/index.js"
Run Code Online (Sandbox Code Playgroud)

但它仍然不起作用,只有在我用dist导入时才有效.我使用npm 3.10.7和节点6.7.0.

有人可以帮忙吗?

问候

node.js npm package.json

9
推荐指数
1
解决办法
6231
查看次数

Spring将请求作用域的bean提升为子线程(HttpServletRequest)

我现在尝试了很多东西,但我似乎错过了一块拼图.这是故事:我有一个请求范围的bean,它从HttpServletRequest读取一些SessionContext.此属性在过滤器中设置.因此,当代码在正确的线程上运行时,这非常正常.

@Component
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.INTERFACES)
public class SessionContextProviderImpl implements SessionContextProvider<SessionContext> {
    private final HttpServletRequest _request;

    @Autowired
    public SessionContextProviderImpl(HttpServletRequest request) {
        _request = request;
    }

    @Override
    public SessionContext get() {
        return (SessionContext) _request.getAttribute(Constants.SESSION_CONTEXT_IDENTIFIER);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我开始使用java 8s新功能CompletableFuture,我有三个功能并行计算内容,而请求线程等待结果.我想要做的是以一种可以在从原始http线程生成的子线程上使用的方式来提升/移交/传播bean或请求.特别是我想从异步提供的CompletableFuture中获取来自HttpServletRequest的SessionContext.

我试过的是这个(取代了get的实现):

final HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
request.getAttribute(Constants.SESSION_CONTEXT_IDENTIFIER);
Run Code Online (Sandbox Code Playgroud)

但这显然与请求范围的bean相同."getRequest"返回null而不是抛出异常.

作为第三种方法,我尝试了这个原始帖子:

ConfigurableBeanFactory cbf = (ConfigurableBeanFactory) beanFactory;

org.springframework.beans.factory.config.Scope simpleThreadScope = new SimpleThreadScope();

cbf.registerScope("simpleThreadScope", simpleThreadScope);
Run Code Online (Sandbox Code Playgroud)

我将SessionContextProviderImpl的范围设置为"simpleThreadScope".不幸的是,这也没有用,并抛出了一个异常,它在请求范围之外使用.

我正在使用的环境:泽西加上弹簧注射.

也许任何人都有一些想法?

问候

spring multithreading servlets jersey completable-future

8
推荐指数
1
解决办法
6209
查看次数

节点模块的 require.context 不适用于链接包

我创建了一个插件网站。每个插件都遵循一定的名称标准和合同。在我的 main.js 中,我按照名称标准“动态”加载所有包:

const context = require.context("../../node_modules", true, /plugin\-\w+\/dist\/(index\.js|styles\.css)$/)
Run Code Online (Sandbox Code Playgroud)

这需要整个 node_modules 文件夹的上下文并加载所有名为“plugin-X”的模块。它从这些模块中查找“dist/index.js”和“dist/styles.css”。那些后来被导入:

context.keys().forEach(path => {/* do stuff */ })
Run Code Online (Sandbox Code Playgroud)

只要使用 npm install path/to/tgz 安装软件包,这就会非常有效。然而,这并没有带来愉快的开发体验。因此,在我的 plugin-X 文件夹中,我使用“npm link”,而在我的网站中,我使用“npm link plugin-X”。

当我现在启动 webpack 时,整个事情在创建 15K 文件句柄后爆炸。如果我删除“plugin-X”中的 node_modules 文件夹,它就可以工作。但是,我需要 node_modules 来使用 babel 和其他东西进行构建,以识别 src 文件夹中的更改以重建并将新脚本放入 dist 文件夹中。

有什么办法可以做到这一点吗?或者也许我在研究如何做到这一点时错过了另一个选择?

问候

require node.js node-modules webpack

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

单元测试使用Material UI Dialog React组件

我目前正在为我的React + MaterialUi应用程序编写单元测试.

在我的应用程序中,我有一个Dialog.我想确保取决于按下对话框上的按钮:

<FlatButton
  label="Cancel"
  secondary={true}
  onTouchTap={this._cancelDialog.bind(this)} 
 />
 <FlatButton
   label="Submit"
   primary={true}
   onTouchTap={this._confirmDialog.bind(this)} 
 />
Run Code Online (Sandbox Code Playgroud)

内部状态相应地改变.

不幸的是,我无法使用TestUtils.scryRenderedComponentsWithType(FlatButton)

scryRenderedComponentsWithTag("button")
等等来获取对话框内容 .

关于如何测试流量的任何想法?

更新1

所以,我可以通过调用TestUtils.scryRenderedComponentsWithType(对话)取得对话实例.但我无法得到对话框的内容.DOM明智的内容不会在视图内部呈现.它在文档级别(div)上的新创建节点中呈现.所以我试过这个:

let cancelButton = window.document.getElementsByTagName("button")[0];
Simulate.click(cancelButton);
Run Code Online (Sandbox Code Playgroud)

上面的例子中的cancelButton是正确的DOM元素.但是,Simulate.click不会触发组件单击功能.

对乔纳斯说

unit-testing reactjs reactjs-testutils material-ui

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