我unable to get local issuer certificate在执行npm安装时遇到错误:
typings ERR! message Unable to read typings for "es6-shim". You should check the
entry paths in "es6-shim.d.ts" are up to date
typings ERR! caused by Unable to connect to "https://raw.githubusercontent.com/D
efinitelyTyped/DefinitelyTyped/7de6c3dd94feaeb21f20054b9f30d5dabc5efabd/es6-shim
/es6-shim.d.ts"
typings ERR! caused by unable to get local issuer certificate
Run Code Online (Sandbox Code Playgroud)
我最近从更早的版本更新到节点4,并且当出现这些问题时,听起来节点要严格得多.
有讨论的问题在这里它谈论使用CA文件,但它是一个有点超出我的理解,我不清楚该怎么办才好.
我在公司防火墙后面,但我可以在没有任何限制的情况下在浏览器中获得网址.
有没有人对此问题有任何进一步的了解以及有哪些可能的解决方案?
我想知道在此期间恢复到节点0.12 :(
我正在努力解决一个问题,即在本地运行任何 angular 应用程序时,链接到的节点进程ng serve使用了超过 100% 的 CPU 内核。
我现在的环境是:
Angular CLI:7.3.10 节点:11.15.0 操作系统:darwin x64 (Mac OS X Catalina 10.15.4) Angular:7.2.16
我遇到了很多关于此的帖子和问题,其中常见的解决方案似乎是fsevents针对 Mac OS 问题进行安装。
我尝试过的事情:
node-gyp以fsevents在安装后重建fsevents(2.1.3),因为旧版本被指定为 angular-cli (1.2.13) 的可选依赖项
nvm也使用npm rebuild无论我尝试什么,我一直观察到 CPU 使用率很高,我看到它有时会上升 300-400%。
这真的阻碍了我的发展,我希望有人可能有一些我可以尝试的好主意。
如果失败,我想知道是否应该尝试node完全卸载,摆脱nvm并从头开始。
更新 - 已解决
所以我走下了删除nvm和node关闭我的机器并从 …
我面临一个问题,我在我的管道中定义了两个阶段,这两个阶段都在同一个节点上运行,需要在同一个工作区中运行.
这些阶段中的第一阶段最初在我的主节点上运行,但是在定义的步骤结束时必须将一些文件解压缩到不同的节点上.
然后第二阶段只需继续我的主人,并依赖从第一阶段安装的一些模块.
这是我的管道,以更好地解释:
#!groovy
pipeline {
agent { label 'master' }
stages {
stage('Build') { // 1. Running on master in /var/lib/jenkins/workspace/_Pipelines_IACT-Jenkinsfile-UL3RGRZZQD3LOPY2FUEKN5XCY4ZZ6AGJVM24PLTO3OPL54KTJCEQ
steps {
sh '''
npm install
bower install
gulp set-staging-node-env
gulp prepare-staging-files
gulp webpack
'''
stash includes: 'dist/**/*', name: 'builtSources'
stash includes: 'config/**/*', name: 'appConfig'
node('Protractor') { // 2. Running on vnccentos7 in /var/jenkins/workspace/_Pipelines_IACT-Jenkinsfile-UL3RGRZZQD3LOPY2FUEKN5XCY4ZZ6AGJVM24PLTO3OPL54KTJCEQ
dir('/opt/foo/deploy/') {
unstash 'builtSources'
unstash 'appConfig'
}
}
}
}
stage('Unit Tests') {
agent { label 'master' } // 3. Running on master …Run Code Online (Sandbox Code Playgroud) 在构建Angular Library应用程序时,有没有一种自动的方法可以projects/my-library在使用npm version命令时使根级别的package.json和库应用程序的package.json 文件版本(例如)保持同步?
当我使用该命令时,它仅增加根级别package.json,是否有特殊命令或将版本号向下传播到库package.json文件的任何其他方法?
我已经看到了一些解决方案,例如在ng build读取根级别的package.json版本号并将其写入库之后运行脚本,但是我不确定这是最好的方法。
在Angular中构建库时,还有其他人遇到过这种情况吗?如果是的话,您如何处理呢?
谢谢
在我的一个阶段中,我需要在构建完成后复制两个文件夹的内容并复制到另一个目录.
我实际上是将自由式作业转换为管道,并且一直在使用工件部署器插件.阅读,看起来像stash和unstash命令应该有助于我想要实现的目标.
有人可以验证这是否是下面的正确方法?
stage('Build') {
steps {
sh '''
gulp set-staging-node-env
gulp prepare-staging-files
gulp webpack
'''
stash includes: '/dist/**/*', name: 'builtSources'
stash includes: '/config/**/*', name: 'appConfig'
dir('/some-dir') {
unstash 'builtSources'
unstash 'appConfig'
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在一个阶段更改dir,这是否意味着此后所有其他阶段将尝试从该目录执行命令,或者他们是否回到使用工作区默认位置?
谢谢
编辑
我已经意识到我真正想要做的是将构建的源复制到不同的节点(运行不同的操作系统).所以在我的代码片段中,我已经共享,在我切换目录的地方,该目录实际上是在我设置的不同机器(节点)上.
我需要dir()用node('my-node-name')块包裹块吗?我很难找到例子.
谢谢
管道编辑器位于Blue Ocean Jenkins插件中的哪个位置?
我可以看到我的管道工作,当点击这些工作时,我无法看到任何链接\按钮将我带到编辑器.
我确信在以前的测试版中我可以使用它,但是现在我正在使用的正式版本发布,我找不到它.
有谁知道它藏在哪里?
我有一个用ES6语法编写的自定义模式模块,我包含在我的角度应用程序中,当我尝试构建-prod启用了标志的应用程序时,我遇到了问题(来自uglifyjs):
Unexpected token: punc ()
Run Code Online (Sandbox Code Playgroud)
这是一个使用angular-cli 1.7.4的角度5 app.
我的节点模块的条目文件如下:
const MyModule = require('./src/index.js');
const myModule = new MyModule();
module.exports = {
doStuff: myModule.doStuff,
doOtherStuff: myModule.doOtherStuff
}
Run Code Online (Sandbox Code Playgroud)
然后这需要进入我的一个ts文件,如下所示:
import MyModule = require('@acme/mymodule');
Run Code Online (Sandbox Code Playgroud)
运行ng serve任务时,我没有问题,可以按预期使用该应用程序.
它在尝试生产生产构建时,我看到了这个问题.
在./src/index.js文件中,定义了许多使用const\let\async\await的函数.
阅读,我相信这是由我使用ES6和源角度cli执行构建步骤时与uglifyjs不兼容的源.
从我也读过,webpack配置可以从angular-cli配置控制,至少不在1.x中,否则我会尝试其中一个插件来帮助我解决这个问题.
我假设我需要在它遇到angular-cli之前通过额外的步骤运行代码,例如,使用babel来转换我的es6代码.
我正在努力寻找如何与angular和cli相关的示例,我可以找到如何使用babel并且能够在我的一个节点模块源上测试它并且可以看到这个生成的es5版本.
我实际上有4个节点模块,其中一些需要彼此,所以我想确保它们在被转换后仍然可以相互要求.
顺便说一句,不知道它有多相关,但在我的polyfills.ts文件中启用了以下polyfill:
import "core-js/es5";
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';
Run Code Online (Sandbox Code Playgroud)
我感谢您提供的任何建议!
谢谢
UPDATE
我已经制作了一个最小的Angular 5应用程序,它使用了1.x的angular-cli.我已在此复制了构建行为,这也会从UglifyJS生成错误. …
我正在尝试在我正在编写的茉莉花测试套件的每个嵌套描述之前和之后调用一些逻辑.
我现在有类似的东西:
describe('Outer describe', function () {
beforeEach(function () {
login();
someOtherFunc();
});
afterEach(function () {
logout();
});
describe('inner describe', function () {
it('spec A', function () {
expect(true).toBe(true);
});
it('spec B', function () {
expect(true).toBe(true);
});
});
});
Run Code Online (Sandbox Code Playgroud)
我在我的内心描述中找到了我的函数beforeEach并被afterEach调用it.我只希望在外部描述中对每个内部描述调用一次.
这可能吗?
我正在迁移到ui-router的最新稳定版本,并且正在使用$ transitions生命周期钩子在某些状态名称转换到时执行某些逻辑.
所以在我的一些控制器中,我现在有这样的事情:
this.$transitions.onStart({ }, (transition) => {
if (transition.to().name !== 'some-state-name') {
//do stuff here...
}
});
Run Code Online (Sandbox Code Playgroud)
在我对控制器的单元测试中,之前我会在$ rootScope上广播状态更改事件,并将某些状态名称作为事件参数,以达到我需要测试的条件.
例如
$rootScope.$broadcast('$stateChangeStart', {name: 'other-state'}, {}, {}, {});
Run Code Online (Sandbox Code Playgroud)
由于这些状态事件已被弃用,目前$transitions.onStart(...)在测试中触发挂钩的正确方法是什么?
我试过调用$state.go('some-state-name')我的测试,但我永远不会在转换钩子回调函数中遇到我自己的逻辑.根据这里的文档,以编程方式调用state.go应该触发转换,除非我误读?
有没有其他人设法在他们的控制器中为新的ui-router 1.0.x进行转换挂钩的单元测试?
使用转换钩子的我的控制器代码的完整示例:
this.$transitions.onSuccess({ }, (transition) => {
this.setOpenItemsForState(transition.to().name);
});
Run Code Online (Sandbox Code Playgroud)
测试规范:
describe('stateChangeWatcher', function() {
beforeEach(function() {
spyOn(vm, 'setOpenItemsForState').and.callThrough();
});
it('should call the setOpenItemsForState method and pass it the state object', function() {
$state.go('home');
$rootScope.$apply();
expect(vm.setOpenItemsForState).toHaveBeenCalledWith('home');
});
});
Run Code Online (Sandbox Code Playgroud)
我的间谍永远不会被击中,当在本地运行应用程序时,这个钩子会按预期调用,所以它必须是我在测试中设置不正确的东西.我是否需要一些额外的东西才能使转换在测试中成功,因为我正在挂钩onSuccess事件?
谢谢
UPDATE
我在gi上的ui-router机房中提出了这个问题,其中一个回购贡献者回到我身边,建议我检查$state.go('home')我的测试中的调用实际上是通过添加expect($state.current.name).toBe('home');我的测试规范来运行的. …
我已经在Jenkins中配置了一个多分支管道作业链接到我们的GitHub仓库,它正常运行,将检查状态反馈给我们GitHub中的pull请求,因此我们知道分支是否适合合并.
我没有看到任何针对Jenkins的Job列出的公开拉取请求:
我们还安装了Blue Ocean插件,也没有显示PR.
任何人都知道为什么会这样吗?我错过了另一个插件\配置吗?
jenkins ×4
angular ×3
angular-cli ×2
jasmine ×2
node.js ×2
npm ×2
webpack ×2
angularjs ×1
ecmascript-6 ×1
fsevents ×1
github ×1
javascript ×1
ng-packagr ×1
node-gyp ×1
npm-install ×1
ssl ×1
uglifyjs ×1