Jest cli 突然停止工作,所有测试都失败了:
Cannot find module 'babel-preset-env' from '/PATH'
- Did you mean "@babel/env"?
Run Code Online (Sandbox Code Playgroud)
我确定使用 babel 6 的模块和我使用 babel 7 的项目之间存在某种不兼容,但我不确定如何解决。
这是 package.json
{
"name": "testing101",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "parcel index.html",
"test": "jest src/*.js --watchAll",
"nyc": "nyc ava",
"build": "babel src/*.js -d dist"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.4.5",
"@babel/preset-env": "^7.4.5",
"@types/jest": "^24.0.13",
"jest": "^24.8.0",
"nyc": "^14.1.1",
"parcel-bundler": "^1.7.0"
},
"jest": {
"verbose": true,
"testURL": "http://localhost:1234/",
"collectCoverage": true
}, …Run Code Online (Sandbox Code Playgroud) 我是赛普拉斯的新手。我的应用程序作为“路由系统”手动更改window.location.hash。在某些时候,我单击一个更改哈希值的按钮,因此应该在测试期间更改页面。我可以看到执行过程中出现一个“new url”条目,但是如何让 cypress 访问该 url?
简而言之,问题是什么:你可以看到我输入了密码,然后{enter}。运行测试我可以看到地址栏中的哈希值发生变化,但页面并没有根据哈希值变化而变化。
这是测试代码
context("Workflow", () => {
it("login", () => {
cy.visit("http://localhost:3000/src/#login")
cy.get("#username").type("demo").should("have.value", "demouser")
cy.get("#password").type("demo{enter}").should("have.value", "demo") // this should redirect to "/#home"
//cy.wait(10000)
cy.get(".subtitle").should("have.value", "Welcome") //this line fails as ".subtitle" is an element of "/#home"
})
})
Run Code Online (Sandbox Code Playgroud)
编辑:经过大量失败的尝试,我想出了一个部分有效、笨重且hacky的解决方案。我认为我不需要使用它reload()来解决这个问题(必须有更好的解决方案..),但为了使其正常工作,我必须等待所有远程请求完成(否则reload()取消它们)。我说部分工作是因为你可以从代码中的注释中看到,如果我尝试#login先访问,然后按照重定向#home,然后将页面更改为#browser,最后一个不起作用(我可以看到哈希更改为#browser,但是页面仍然是#home)。
import 'cypress-wait-until';
let i = 0;
context("Workflow", () => {
it("login", () => {
cy.server( {
onRequest: () …Run Code Online (Sandbox Code Playgroud) 在我跑完之后,我尝试cordova-uglify(链接)缩小Ionic1项目
ionic cordova build --release
Run Code Online (Sandbox Code Playgroud)
我看到我的js源代码在...的www文件夹中app-release-unsigned.apk根本没有缩小.
ionic info 打印:
[WARN] Error with .\www\lib\ionic\version.json file: FILE_NOT_FOUND, trying
.\bower.json.
cli packages: (C:\Program Files\nodejs\node_modules)
@ionic/cli-utils : 1.19.1
ionic (Ionic CLI) : 3.19.1
global packages:
cordova (Cordova CLI) : 8.0.0
Gulp CLI : not installed globally
local packages:
Cordova Platforms : android 7.0.0 ios 4.5.4
Ionic Framework : ionic1 1.3.4
System:
Android SDK Tools : 26.0.1
Node : v8.9.4
npm : 5.6.0
OS : Windows 7 …Run Code Online (Sandbox Code Playgroud) 我试图找到(使用正则表达式)一个数组字段并仅返回该元素
这是我的数据
[
{
"_id": "56d6e8bbf7404bd80a017edb",
"name": "document1",
"tags": [
"A area1",
"B area2",
"C area3"
]
},
{
"_id": "56d6e8bbf7404bd82d017ede",
"name": "document2",
"tags": [
"b_area3",
"b_area4",
"b_area5"
]
}
]
Run Code Online (Sandbox Code Playgroud)
我的查询
var query=new RegExp('^'+string, "i");
Model.find({tags:query},{'tags.$': 1}, function(err,data){
if(err) console.log(err);
res.json(data);
});
Run Code Online (Sandbox Code Playgroud)
此查询仅选择标记字段(如我所愿),但选择第一个元素.我需要与查询匹配的元素.
编辑:我也尝试了mongodb聚合,$ filter cond是错误的.我收到错误"MongoError:invalid operator $ regex"
caseNote.aggregate([
{ $match: {tags:query}},
{ $project: {
tags: {$filter: {
input: 'tags',
as: 'item',
cond: {$regex: ['$$item', query]}
}}
}}
], function (err, result) {
if (err) {
console.log(err);
} …Run Code Online (Sandbox Code Playgroud) 我想使用 react-18next 支持本地化。此组件显示Picker,设置 LocalStorage 键(所选语言)并更改应用程序语言。我注意到该onValueChange方法被调用了两次。第一个调用(在 Picker 项目上使用正确的选择点击操作)具有正确的参数(我选择的语言),第二个调用具有第一个 Picker 项目的值,只要值为 (!)。
示例:如果我选择EnglishPicker 项目,我会看到 Picker 切换到英语(第一次_changeLanguage()调用),然后再次切换到“设备”(第二次_changeLanguage()调用)。我确定这是一个异步操作问题,不知道在哪里..
@translate(['settings', 'common'], { wait: true })
export default class Settings extends Component {
state = {};
constructor(props) {
super(props);
}
componentWillMount() {
this.getLang();
}
async _changeLanguage(ln) {
const { t, i18n, navigation } = this.props;
console.warn("_changeLanguage: ",ln)
await this.promisedSetState({lang:ln})
if(ln=="device") {
console.warn("removing lang setting")
await AsyncStorage.removeItem('@App:lang');
} else {
console.warn("lang setting: ", ln)
await AsyncStorage.setItem('@App:lang', …Run Code Online (Sandbox Code Playgroud) 在标题中,我如何将工具提示分为两行?
我也会使用一些html标签(比如span或p).
我已经尝试过html实体,它不起作用.
Some<br> text
我试图找到一种可靠的方法来衡量2个术语的语义相似性.第一个度量可以是下义/上位图上的路径距离(最终,2-3个度量的线性组合可能更好......).
from nltk.corpus import wordnet as wn
dog = wn.synset('dog.n.01')
cat = wn.synset('cat.n.01')
print(dog.path_similarity(cat))
Run Code Online (Sandbox Code Playgroud)
n.01方法,为什么它是必要的.在db上有一组异步操作要做,我想知道执行“阻塞” await循环与执行“阻塞” 循环在性能方面有什么区别Promise.all。
let insert = (id,value) => {
return new Promise(function (resolve, reject) {
connnection.query(`insert into items (id,value) VALUES (${id},"${value}")`, function (err, result) {
if (err) return reject(err)
return resolve(result);
});
});
};
Run Code Online (Sandbox Code Playgroud)
Promise.all解决方案(它需要一个for循环来构建promises数组。)
let inserts = [];
for (let i = 0; i < SIZE; i++) inserts.push(insert(i,"..string.."))
Promise.all(inserts).then(values => {
console.log("promise all ends");
});
Run Code Online (Sandbox Code Playgroud)
等待循环解决方案
let inserts = [];
(async function loop() {
for (let i = 0; i < SIZE; i++) {
await insert(i, …Run Code Online (Sandbox Code Playgroud) 我想设置 2 个临时环境变量,然后运行一个二进制文件。
命令是这样的:
ENV_1=firstparam ENV_2=secondparam my_binary
Run Code Online (Sandbox Code Playgroud)
我想在 bash 脚本中移动 2 个环境变量分配并使用如下命令:
setparams.sh my_binary
Run Code Online (Sandbox Code Playgroud)
setparams.sh
#!/bin/bash
ENV_1=firstparam
ENV_2=secondparam
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?为什么没有设置变量?
我需要顺序执行一堆'promisified'函数(我的意思是同步,因为每一个都需要前一个的结果).此代码打印bar1bar0时,我期望bar0bar1.
function _setTime(str) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(`bar${str} `);
}, 1);
});
}
_setTime("0")
.then(function(str) {
return _setTime("1"+str)
})
.then(function(str) {
console.log(str)
})
Run Code Online (Sandbox Code Playgroud) 我正在努力解决cordova和npm clis错误。我知道这是一个非常常见的错误:我每天都会在不同的项目和平台上收到此错误。
我注意到我的 Ionic1 应用程序,它使用 crosswalk-webview,在 Android 6 上工作,但在 Android 7 上崩溃(这似乎是一个已知的错误)。 这些是我尝试过的步骤:
我尝试删除并重新添加 crosswalk-webview:
cordova plugin rm cordova-plugin-crosswalk-webview
cordova plugin add cordova-plugin-crosswalk-webview
添加插件时出现 npm 错误:
npm verb stack Error: EPERM: operation not permitted, rename...
构建失败:
ionic cordova build --release android出现相同的错误:
Error: EPERM: operation..
由于几个插件已经过时,我想删除并重新添加整个平台 android
cordova platform rm android
大约 1 小时后命令仍然卡住所以我终止了它。
现在,如果我尝试将 android 添加为平台,则会出现错误:
Error: EPERM: operation not permitted, rename...
我尝试降级 npm,我尝试了以下 5.6.0、5.5.1、5.4.2、5.3.0、5.0.0、4.6.0 版本。我重新安装了 node、cordova、ionic,清除了 npm 缓存。我不解决。这显然是一个 NPM 问题,也许这里某处知道如何解决..
在当前状态下,如果我尝试:
cordova platform add …
代码非常简单:我尝试将函数addContactFn()从MainCompto传递给SideMenu。单击时出现错误
未捕获的类型错误:this.value.handleEvent 不是函数
class MainComp extends LitElement {
constructor(){
super()
this.addContactFn = this.addContactFn.bind(this)
}
addContactFn() {
console.log("clicked");
}
render(){
return html`
<div class="main-page">
<side-menu addContactFn="${this.addContactFn}"></side-menu>
</div>
`
}
}
class SideMenu extends LitElement {
constructor(){
super()
}
static get properties(){
return {
addContactFn: Function
}
}
render(){
return html`<a @click="${this.addContactFn}">Add contact</a>`
}
}
Run Code Online (Sandbox Code Playgroud) 有没有办法在组件具有可用属性之后但在第一次渲染之前执行方法?我的意思是 classcontructor()和firstUpdated(). 这听起来微不足道,也许实际上我错过了一些微不足道的东西..
javascript ×3
lit-element ×3
cordova ×2
node.js ×2
babeljs ×1
bash ×1
cypress ×1
e2e-testing ×1
ecmascript-6 ×1
es6-promise ×1
expo ×1
i18next ×1
jestjs ×1
jquery ×1
mongodb ×1
mongoose ×1
nlp ×1
nltk ×1
npm ×1
polymer ×1
polymer-3.x ×1
python ×1
react-native ×1
semantics ×1
tipsy ×1