我正在尝试transform-es2015-destructuring在我的Mocha测试中使用Babel插件,但我遇到了问题:
$ node_modules/mocha/bin/mocha --compilers js:babel-core/register test/testMain.js
/home/my/project/node_modules/babel-core/lib/transformation/file/options/option-manager.js:313
throw new Error("Couldn't find preset " + (0, _stringify2.default)(val) + " relative to directory " + (0, _stringify2.default)(dirname));
^
Error: Couldn't find preset "transform-es2015-destructuring" relative to directory "/home/my/project"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试安装插件时,一切正常:
$ npm install babel-plugin-transform-es2015-destructuring
myproject-reactjs@1.8.1 /home/my/project
??? babel-plugin-transform-es2015-destructuring@6.9.0
Run Code Online (Sandbox Code Playgroud)
如果我直接使用Babel,我会遇到同样的问题:
./node_modules/babel-cli/bin/babel.js --plugins transform-es2015-destructuring test/testMain.js
Error: Couldn't find preset "transform-es2015-destructuring" relative to directory "/home/my/project"
Run Code Online (Sandbox Code Playgroud)
换句话说,NPM告诉我我有插件,但Babel告诉我我没有.我很想相信NPM是正确的,但如果它是我无法弄清楚为什么Babel找不到(明确安装的)转换包.
这是我的.babelrc:
{
"presets": [
"es2015",
"react",
"transform-es2015-destructuring",
"transform-object-rest-spread"
]
}
Run Code Online (Sandbox Code Playgroud)
这是我dependencies参赛作品的相关部分package.json:
"babel": "^6.5.2", …Run Code Online (Sandbox Code Playgroud) 我对Redux比较新,我有以下情况:
{type: 'RECEIVE_FIRST_MESSAGE', message}我的MessageReducer处理方式RECEIVE_FIRST_MESSAGE是:
A)加入action.message到state.messages
B)进行另一次AJAX调用以获取下一条消息(如果action.message.hasNextMessage)
我SessionReducer也RECEIVE_FIRST_MESSAGE通过添加action.message.sessionId来处理state.session.id
只有一个问题:当我获取第二条消息时,我需要使用sessionId我从第一条消息中获取的消息.但是因为MessageReducer之前运行SessionReducer,会话ID不是在MessageReducer尝试发出第二个AJAX请求时的状态.
我可以通过使用超时来"解决"这个问题,以确保MessageReducer在1毫秒之后不再发出第二个请求,但这感觉就像一个黑客/反模式.
TLDR
当我有:
state(由两个不同的减速器处理)state.session.id从reducer B中添加一些state()作为响应如何在减速器A进行AJAX调用之前确保减速器B添加状态(以不会让Dan Abramov哭的方式)?
当我使用 Chrome 开发人员工具检查我网站上的元素时,我将以下内容视为元素的“计算”样式:
font-family: "HelveticaNeue-Medium", "Helvetica Neue Medium", "Helvetica Neue", Helvetica, "Roboto", Arial, "Lucida Grande", sans-serif
Run Code Online (Sandbox Code Playgroud)
但是,如果我进一步向下滚动(到“计算”选项卡的底部),我会看到:
Rendered Fonts
Liberation Sans—Local file(11 glyphs)
Run Code Online (Sandbox Code Playgroud)
由于我的(Linux)操作系统必须有Arial和sans-serif,我很困惑为什么 Chrome 会选择“Liberation Sans”:它甚至不在我的font-family列表中。
我会责怪我自己的糟糕 CSS,但理论上“计算”选项卡显示了我的规则的最终/处理版本,所以无论我的原始 CSS 多么糟糕,Chrome 清楚地看到我的font-family列表已定义(并被应用)到我的元素......它只是忽略它。
谁能解释这个谜?
编辑: 我安装了一个字体检查程序,结果证明 Linux (Mint) 实际上并没有带有Arialorsans-serif字体……但即便如此,我认为浏览器提供了(至少)一种基本sans-serif字体,无论是什么操作系统?那不正确吗?
我遇到了一个问题,我的代码中的一个地方(身份验证部分)在会话中放置了一些东西,而代码中的另一个地方试图访问它(我的 GraphQL API 部分)。问题是,当第二部分试图获取数据时,它并不存在。
当我登录时,request.session.id我可以清楚地看到核心问题:在两个请求之间,会话本身发生了变化。身份验证请求发生,并将数据放入会话 A,但是当 graphQL 代码访问时,request.session它获取会话 B,但没有数据。
但是,这不是“请为我调试我的代码”请求。相反,我只想了解该库的工作原理,以便我可以自行调试。
任何人都可以解释一下如何/为什么express-session决定(大概是在获得新请求时)它应该放弃旧会话并开始一个新会话吗?从我读过的内容来看,它可能与我的域设置有关,但我尝试使用那些没有成功的方法,实际上我只是想了解该库的工作原理,特别是在决定重新使用会话或生成一个新的。
我正在使用 Visual Studio Code 的类型检查 Javascript功能。对于那些不熟悉的人来说,这可以实现推断类型,因此您可以享受在 VS Code 中键入的许多好处,而无需编写类型。
不幸的是,样式化组件库中基于模板标签的组件存在问题。如果我有一个像这样的组件:
const ProductImage = styled.div`
background-image: url("${props => props.imagePath}");
`;
Run Code Online (Sandbox Code Playgroud)
imagePathVS Code 在(但不是)下方添加了一条波浪线警告线props.,因为 Typescript 无法推断 props 参数的类型。
据我了解, Typescript 还可以从 JSDoc 获取类型,所以我尝试添加:
/**
* @param {String} [props.imagePath]
* @param {String} [props.alignRight]
*/
const ProductImage = styled.div`
background-image: url("${props => props.imagePath}");
float: ${props => (props.alignRight ? `left` : `right`)}};
`;
Run Code Online (Sandbox Code Playgroud)
...但这不起作用。
我没有tsconfig.js,但为了启用 JSDoc 键入,我尝试将以下内容添加到我的jsconfig.js:
// Generate d.ts files
"declaration": true,
// …Run Code Online (Sandbox Code Playgroud) 如果我发送Facebook快速回复JSON,如下所示:
"quick_replies":[
{"content_type":"text","payload":"RED","title":"Red"},
{"content_type":"text","payload":"BLUE","title":"Blue"},
{"content_type":"text","payload":"GREEN","title":"Special"},
]
Run Code Online (Sandbox Code Playgroud)
并且用户选择"特殊"回复,我回来了
{"recipient_id":5555,"text":"Special"}
Run Code Online (Sandbox Code Playgroud)
我认为有效载荷字段的重点是提供一个除了标题之外的值,它将被发送回去,但似乎Facebook只是发送了所选答复的标题,这引出了一个问题......有什么意义呢?有效载荷场?
我的一位同事将这个Ava包添加到我们的设置中,它完成了我以前从未见过 Node 包所做的事情:干扰其他包!现在,当我尝试运行 Mocha 时,我得到:
$ node_modules/mocha/bin/mocha test/
Test files must be run with the AVA CLI:
$ ava node_modules/mocha/bin/_mocha
Run Code Online (Sandbox Code Playgroud)
我知道 Ava 想运行我的 Mocha 测试,但如果我想要,我ava mocha不会运行mocha. 并且因为同事正在使用它,我不能简单地卸载该软件包。
有什么办法可以在安装了 Ava 的机器上运行普通的 Mocha 测试?
Stack Overflow 上有很多工具提示解决方案,即。当用户将鼠标悬停在某些其他文本上时显示某些文本或 HTML 的方法。然而,我似乎找不到一个:
<div>或其他块元素)display:block)这些要求来自于想要提供内联、文本段落内术语的定义,并且我希望这些定义能够包含块显示 HTML 内容(例如段落和图像)。
我发现的大多数纯 CSS 解决方案似乎都是通过将“工具提示”定义嵌套在悬停目标的 HTML 中来工作的。但是,如果您希望该术语是内联的,但其定义是块,则这是不可能的,因为您必须在内联标记内嵌套块内容。
我是否可以使用任何其他方法,让我将段落内的单词或短语作为“悬停目标”,然后在发生这种情况时显示 HTML 悬停定义......无需 Javascript?
我为此尝试了Google,但是(令人惊讶地)找不到它。谁能指出我每个HTML标签的数组(使用Javascript语法)?我需要这个,因为我有一个图书馆,希望我将我想要的每个标签都列入白名单(并且我想要所有标签)。
因此,换句话说,数组将类似于:
var htmlTags = ['a', 'base', 'br', ...]
Run Code Online (Sandbox Code Playgroud)
*潜在关闭者的速记*
尽管此问题确实要求引用资源,但并不是在请求“收藏夹外资源”;实际上,答案中包含了全部资源。我确实相信此数组将来可能对其他人有用,因此请考虑不要关闭此问题(据我所知,它不符合“脱离主题”的条件),并将此HTML标签数组留给其他人使用寻找未来。如果找不到我,也没有任何评论者/答复者,那么显然这不是网络上已经存在的资源。