我正在尝试使Leaflet库与我的Typescript项目一起正常运行。
我的项目遵循commonJs模式(源文件中的import \ exports),但是当我使用webpack进行编译时,编译器从文件中提示以下错误,在这些文件中我尝试访问Leaflet L模块公开的全局变量
“ L”表示UMD全局,但当前文件是一个模块。考虑添加导入。
现在,如果我按如下方式将传单导入到源文件中,则可以解决此问题:
import * as L from 'leaflet'
Run Code Online (Sandbox Code Playgroud)
但是我想知道是否可以在所有文件中全局访问t而不必在每个文件中都导入文件。
我进行了深入研究,发现了一些解决方法,您可以像这样声明自己的全局变量:
全球公司
import * as L from "leaflet";
declare global {
const L: L
}
export {};
Run Code Online (Sandbox Code Playgroud)
我不确定是否建议这样做,感觉有点脏,是否可以通过webpack config来为commonJs项目提供UMD模块公开的全局变量,还是我在胡说八道?我承认尝试理解模块类型及其互换性之间的差异会感到困惑,所以轻松一点!
我有问题通过gulp运行业力测试.
我正在使用phantomjs启动程序插件,当它尝试启动时,我看到以下内容:
[09:27:02] Starting 'karma-tests'...
DEPRECATED: use your own version of lodash, this will go away in karma@2.0
DEPRECATED: use your own version of lodash, this will go away in karma@2.0
28 01 2017 09:27:04.817:INFO [karma]: Karma v1.4.0 server started at http://0.0.0.0:9876/
28 01 2017 09:27:04.817:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency
28 01 2017 09:27:04.817:INFO [launcher]: Starting browser PhantomJS
28 01 2017 09:27:07.882:INFO [PhantomJS 2.1.1 (Windows 8 0.0.0)]: Connected on socket VwHY_WyYXMEj3RvZAAAA with id 284
68634
28 01 …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何在角度CLI的生成的覆盖率报告中包含我的所有.ts源.目前,我只是覆盖了具有相关规范和测试的文件.
我已经尝试将includeAllSources标志添加到我的karma.conf.js文件中,但这没有任何区别.
这是正确的方法吗?我正在使用Angular CLI 6.1.5
谢谢
我正在使用ng-select并定义了一个包含输入的自定义过滤器标题模板。
当为选择打开下拉菜单时,我希望输入获得焦点,但我不知道如何操作。
我这里有一个例子 -> https://stackblitz.com/edit/angular-playground-f57jog
我确实尝试附加到 ng-select(open)输出并调用focus()我的输入元素,但这对我来说失败了。
这里的正确方法是什么?谢谢
我试图通过一个饼图示例来工作,从而使图表的位置在其包含元素的内部居中对齐,在这种情况下,只是一个简单的div设置为使用100%可用宽度。
看到这个小提琴
如您所见,图表的中心位于div的左上角,而不是按照我设置的transform属性使用可用宽度和高度的中心点:
.attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');
Run Code Online (Sandbox Code Playgroud)
我在这里遵循此示例,该示例使用硬代码宽度,在本例中,我将使其响应并在屏幕调整大小事件上重新绘制。
为了防止从div \ svg区域的中心点绘制图表,我在做错什么或完全错过了?
编辑
好的,通过检查DOM,我注意到形成每个饼图段的路径都不是svg group(g)元素的子级,而在其他示例中,我看到了。我不确定为什么在我的情况下无法正常工作,但是从我的判断看来,这似乎是个问题。
我正在尝试使用 supertest 和 nock 在我的 Express 应用程序中测试中间件功能,但是我遇到的问题是,我设置的路由由较早的中间件检查以确保传入req对象上存在会话属性。
我需要在运行测试之前以某种方式模拟会话对象,但我不确定如何解决这个问题。首先让我分享一些代码:
路由器.js
app.use('/api', helpers.hasAccessToken, require('./routes.js'));
Run Code Online (Sandbox Code Playgroud)
路由.js
router.route('/*')
.get(routesController.fetch)
Run Code Online (Sandbox Code Playgroud)
helpers.js
module.exports.hasAccessToken = function(req, res, next) {
if(req.session.accessToken){
next();
} else {
res.status(401).send('LOGIN_SESSION_ENDED');
}
};
Run Code Online (Sandbox Code Playgroud)
路由控制器.js
module.exports.fetch = function(req, res) {
var options = helpers.buildAPIRequestOptions(req);
request(options, function(err, response, body){
res.status(response.statusCode).send(body);
});
};
Run Code Online (Sandbox Code Playgroud)
路由控制器.spec.js
var app = require('./index.js'),
request = require('supertest')(app),
expect = require('chai').expect,
nock = require('nock');
describe('GET requests', function(){
beforeEach(function(){
nock('https://10.105.195.12:8243')
.get('/v1/schemes')
.reply(200, {foo:'bar'});
});
it('should return a 200 HTTP status code', function(done){ …Run Code Online (Sandbox Code Playgroud) 假设我有以下对象数组存储单个键\值对:
var someArray = [
{foo: 1},
{bar: 2}
];
Run Code Online (Sandbox Code Playgroud)
我想将此数组展平为单个对象,其中原始对象中的每个键都成为新单个对象的属性,如下所示:
someObject = {
foo: 1,
bar: 2
}
Run Code Online (Sandbox Code Playgroud)
我将始终拥有唯一的密钥,并且只有一个密钥\值配对.
我知道如果我在foreach中循环遍历数组,那么我只能访问项目的索引和值,例如
0: {foo: 1}
Run Code Online (Sandbox Code Playgroud)
我希望能够循环,当访问该项时,分别读取键和值,以便我可以附加到我的新对象上.
我觉得lodash应该可以在这里提供帮助,但是我很难找到他们的方法可以帮助的时候.
有人能指出我正确的方向吗?
谢谢
在我的阶段中,我正在其中一个阶段中从主节点更改为从节点
pipeline {
agent any
stages {
stage('Install Deps...') {
steps {
echo 'Do something here'
}
}
stage('Build') {
steps {
echo 'Build stuff here...'
stash includes: 'dist/**/*', name: 'builtSources'
node('Protractor') {
dir('/some-dir/deploy') {
unstash 'builtSources'
}
}
}
}
stage('Tests') {
steps {
parallel (
"Chrome": {
echo 'Chrome testing here...'
}
)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我从Jenkins的控制台输出中可以看到,在第一阶段的开始它正确地说了“在master上运行”,而在第二阶段就变成了“在Protractor上运行”。当第三个“测试”阶段开始时,我看不到节点在控制台输出中变回主节点,这是预期的行为吗?
除非应使用node()块明确告知,否则阶段是否应在主服务器上运行?
我在d3中放了一个饼形图,并在绘制每个圆弧时使用过渡和延迟。
代码段:
var path = g.selectAll("path")
.data(pie(dataset.apples))
.enter().append("path")
.attr("fill", function(d, i) { return color(i); })
.transition()
.delay(function(d, i) {
return i * 100;
})
.duration(500)
.attr("d", arc);
Run Code Online (Sandbox Code Playgroud)
工作提琴
我想实现一个更平滑的过渡,以使每条弧线在绘制到绘制时都从一个弧形到另一个弧形依次增长,而不是像现在这样立即显示。
有人可以给我些帮助吗?谢谢
我正在将应用程序从 Angular Material 1.0.5 升级到 1.0.9
我目前有一些包含选择和图标元素的输入容器,如下所示
<md-input-container class="md-icon-right" flex>
<label>Something</label>
<md-select ng-model="option2" flex>
<md-option ng-repeat="option in options">
</md-option>
</md-select>
<md-icon class="material-icons">X</md-icon>
</md-input-container>
Run Code Online (Sandbox Code Playgroud)
所以这意味着我的图标出现在选择输入的右侧。
升级到 1.0.9 后,使用与上面相同的标记,图标现在显示在左侧。
我查看了 AM 1.0.9 演示页面上的输入示例,但看不到各个版本之间有任何更改。
这是 1.0.5 的样子 - http://codepen.io/parky128/pen/rLWJNK
只需将材质脚本包含更改为 1.0.9,您就会看到,事实上这种情况从 1.0.6 开始就发生了。
还要注意,这似乎只是使用 md-select 时的问题,常规输入不会受此影响。
我在他们的更改日志中看不到任何重大更改来说明为什么会发生这种情况。
有人知道在 1.0.6 及以上版本的 md-input-container 中使用 md-select 时如何使图标向右对齐吗?
谢谢
angular ×2
d3.js ×2
karma-runner ×2
angular-cli ×1
angularjs ×1
arrays ×1
commonjs ×1
express ×1
gulp-karma ×1
javascript ×1
jenkins ×1
key-value ×1
lodash ×1
nock ×1
node.js ×1
phantomjs ×1
supertest ×1
typescript ×1
umd ×1
webpack ×1