有时当我做一个小项目时,我不够小心,并且意外地为我不知道的DLL添加依赖项.当我将此程序发送给朋友或其他人时"它不起作用",因为"某些DLL"丢失了.这是因为程序可以在我的系统上找到DLL,但不能在他们的系统上找到.
是否有程序/脚本可以扫描可执行文件的DLL依赖项或在"干净的"无DLL环境中执行程序以进行测试以防止这些oops情况?
在我的脚本中,我经常使用拥有自己的存储库的库(我或其他人).我不想在我的仓库中复制那些,并且每次新版本发布时都不得不更新它们.但是,当有人克隆回购时,它仍应在本地工作,而不是断开链接.
关于我能做什么的任何想法?
[add]所以我的下一个问题是,当我尝试添加一个新的依赖(npm install --save socket.io).JSON文件也有效.我收到此错误:无法解析json
npm ERR! Unexpected string
npm ERR! File: /Users/John/package.json
npm ERR! Failed to parse package.json data.
npm ERR! package.json must be actual JSON, not just JavaScript.
npm ERR!
npm ERR! This is not a bug in npm.
npm ERR! Tell the package author to fix their package.json file. JSON.parse
Run Code Online (Sandbox Code Playgroud)
所以我一直试图弄清楚为什么这个错误已经回归.所有文件(HTML,JSON,JS)都在我桌面上的同一文件夹中.我正在使用node.js和socket.io
这是我的JS文件:
var app = require('express')();
var http = require('http').Server(app);
app.get('/', function(req, res){
res.sendFile('index.html');
});
http.listen(3000,function(){
console.log('listening on : 3000');
});
Run Code Online (Sandbox Code Playgroud)
这是返回的内容:
MacBook-Pro:~ John$ node /Users/John/Desktop/Chatapp/index.js
listening on …
Run Code Online (Sandbox Code Playgroud) 如何获取我拥有的jar文件并将其添加到maven 2中的依赖系统?我将成为这个依赖项的维护者,我的代码需要在类路径中使用这个jar才能编译.
我有一个多项目配置,我想使用gradle.
我的项目是这样的:
项目A.
src/main/java
src/test/java
项目B.
src/main/java
(取决于src/main/java
在项目A) src/test/java
(取决于src/test/java
在项目A) 我的Project B build.gradle
文件是这样的:
apply plugin: 'java'
dependencies {
compile project(':ProjectA')
}
Run Code Online (Sandbox Code Playgroud)
该任务compileJava
工作得很好,但compileTestJava
不会从项目A编译测试文件.
我正在编写一个组件,给定一个ZIP文件,需要:
我想对这个组件进行单元测试.
我很想编写直接处理文件系统的代码:
void DoIt()
{
Zip.Unzip(theZipFile, "C:\\foo\\Unzipped");
System.IO.File myDll = File.Open("C:\\foo\\Unzipped\\SuperSecret.bar");
myDll.InvokeSomeSpecialMethod();
}
Run Code Online (Sandbox Code Playgroud)
但人们经常说,"不要编写依赖于文件系统,数据库,网络等的单元测试".
如果我以单元测试友好的方式写这个,我想它看起来像这样:
void DoIt(IZipper zipper, IFileSystem fileSystem, IDllRunner runner)
{
string path = zipper.Unzip(theZipFile);
IFakeFile file = fileSystem.Open(path);
runner.Run(file);
}
Run Code Online (Sandbox Code Playgroud)
好极了!现在它是可测试的; 我可以将测试双打(模拟)提供给DoIt方法.但是以什么代价?我现在必须定义3个新接口才能使这个可测试.究竟,我在测试什么?我正在测试我的DoIt函数是否正确地与其依赖项交互.它不测试zip文件是否正确解压缩等.
我觉得我不再测试功能了.感觉就像我只是在测试课堂互动.
我的问题是:对依赖于文件系统的东西进行单元测试的正确方法是什么?
编辑我正在使用.NET,但这个概念也可以应用Java或本机代码.
我正在尝试使用 Airflow 和 Postgres 构建一个 docker 容器,但在构建过程中出现了许多错误,如下所示。我尝试过降级,markupsafe
如下requirements.txt
所示,但没有帮助。我可以做什么来解决这个问题?
# I tried this version:
markupsafe==2.1.1
# and then also this one:
markupsafe==2.0.1
Run Code Online (Sandbox Code Playgroud)
错误信息:
ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/python3.7/site-packages/markupsafe/__init__.py)
Run Code Online (Sandbox Code Playgroud)
我的docker-compose.yml
:
version: '3'
services:
postgres:
image: postgres:11.2
environment:
- POSTGRES_USER=airflow
- POSTGRES_PASSWORD=airflow
- POSTGRES_DB=airflow
ports:
- "5432:5432"
webserver:
image: puckel/docker-airflow:1.10.4
build:
context: https://github.com/puckel/docker-airflow.git#1.10.4
dockerfile: Dockerfile
args:
AIRFLOW_DEPS: gcp_api,s3
restart: always
depends_on:
- postgres
environment:
- LOAD_EX=n
- EXECUTOR=Local
- FERNET_KEY=jsDPRErfv8Z_eVTnGfF8ywd19j4pyqE3NpdUBA_oRTo=
volumes:
- ./sparkify/dags:/usr/local/airflow/dags
# Uncomment …
Run Code Online (Sandbox Code Playgroud) 我开始将我的项目转换为maven,因为我需要使用一个仅以二进制形式分发的库而不是maven,但是在我的头撞到墙上太长时间之后我决定不再伤害自己而只是使用蚂蚁.我想让maven将jar及其所有传递依赖项下载到我选择的目录中,这样我就可以像往常一样将它们检入我的SCM并再次成为一个幸福的开发者.
任何想法如何轻松地做到这一点?
部署到 AWS 时,我遇到了纱线错误
error fs-extra@7.0.1: The engine "node" is incompatible with this module. Expected version ">=6 <7 || >=8". Got "7.0.0"
Run Code Online (Sandbox Code Playgroud)
知道这将如何解决吗?
如果我在 package.json 中指定引擎,这会解决吗
{
"engines" : {
"node" : ">=8.0.0"
}
}
Run Code Online (Sandbox Code Playgroud) 我目前正在将一个大型解决方案(约70个项目)从VS 2005 + .NET 2.0迁移到VS 2008 + .NET 3.5.目前我有VS 2008 + .NET 2.0.
问题是我需要逐个移动项目到新的.NET框架,确保没有.NET 2.0项目引用.NET 3.5项目.有没有什么工具能给我一个很好的项目依赖图?