切换NPM Artifactory源后Angular项目构建失败的问题求助
切换NPM Artifactory源后Angular项目构建失败的问题求助
大家好,想咨询一个特别诡异的问题:
我负责的项目部署在公司代理环境下,之前一直用内部的Artifactory X做npm源,不管是本地构建还是通过公司的构建代理执行,从提交代码、拉取依赖包到最终构建发布,整个流程都顺得不行。
最近公司通知要停用Artifactory X,全部迁移到新的Artifactory Y。我按照新Artifactory里的「Set Me Up」指引,把本地的.npmrc配置更新成了新源的信息,操作和当初配置旧源时完全一样:
email = my.email@company.com always-auth = true registry=https://y-artifactory.company.com/artifactory/new/url/ //y-artifactory.company.com/artifactory/new/url/:_authToken=here-goes-my-auth-token
结果换源之后,不管是本地构建还是走构建代理,都出问题了:
- 第一次构建直接报错说缺少
@types/minimatch包。我查了GitHub上的讨论,都说这个包根本不需要手动安装,但为了推进,我还是把它加到了开发依赖里。 - 加完之后又出现了更离谱的错误,Angular/TypeScript开始抱怨可选链操作符(
?.)的问题:
ERROR in ./node_modules/react-draggable/build/cjs/Draggable.js 210:22 Module parse failed: Unexpected token (210:22) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. | // the underlying DOM node ourselves. See the README for more information. | findDOMNode() /: ?HTMLElement/{ > return this.props?.nodeRef?.current ?? _reactDom.default.findDOMNode(this); | } | render() /: ReactElement<any>/{
我明白这个错误的常见原因——可选链是ES2020的语法,需要对应的转译支持,但我的项目明明目标是ES2015啊!相关的tsconfig配置如下:
{ "lib": ["es2015", "dom", "ES2020.String"], "target": "es2015", "experimentalDecorators": true, "module": "esnext", "moduleResolution": "node" }
最让我困惑的是:我除了换Artifactory源之外,没有做任何其他代码或配置修改!用旧源的时候一切正常,换了新源就出这种依赖转译的问题。而且我已经确认:
- npm身份验证是成功的
- 所有依赖包都已经正常下载到了
node_modules里 - 构建启动阶段没有问题,就是到处理依赖代码的时候才报错
有没有大佬遇到过类似的情况?仅仅切换npm源为什么会引发这类构建错误?
内容来源于stack exchange
相关产品推荐
相关产品推荐

