我在公司环境中工作,必须代理所有东西(或有空隙)。我们已经安装了Artifactory Pro,以镜像Maven Central,NPM Registry和DockerHub。我们已经使用Maven多年了,它的作用令人惊奇。我们最近开始通过Node.js和npm处理Angular的前端开发。安全要求保持不变。
使用Angular CLI(ng new my-app
)创建新的Angular项目时,预期会从我们公司的Artifactory实例中获取数百个npm依赖项。 但是,该过程在几分钟后失败,并显示以下消息:
[...]
CREATE my-app5/e2e/src/app.e2e-spec.ts (299 bytes)
CREATE my-app5/e2e/src/app.po.ts (204 bytes)
npm WARN deprecated circular-json@0.5.9: CircularJSON is in maintenance only, flatted is its successor.
ms)
> node-sass@4.10.0 install C:\dev\angular\my-app5\node_modules\node-sass
> node scripts/install.js
Downloading binary from https://github.com/sass/node-sass/releases/download/v4.10.0/win32-x64-64_binding.node
Cannot download "https://github.com/sass/node-sass/releases/download/v4.10.0/win32-x64-64_binding.node":
getaddrinfo ENOTFOUND github.com github.com:443
Hint: If github.com is not accessible in your location
try setting a proxy via HTTP_PROXY, e.g.
export HTTP_PROXY=http://example.com:1234
or configure npm proxy via
npm config set proxy http://example.com:8080
> node-sass@4.10.0 postinstall C:\dev\angular\my-app5\node_modules\node-sass
> node scripts/build.js
Building: C:\Program Files\nodejs\node.exe C:\dev\angular\my-app5\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
gyp info it worked if it ends with ok
gyp verb cli [ 'C:\\Program Files\\nodejs\\node.exe',
gyp verb cli 'C:\\dev\\angular\\my-app5\\node_modules\\node-gyp\\bin\\node-gyp.js',
gyp verb cli 'rebuild',
gyp verb cli '--verbose',
gyp verb cli '--libsass_ext=',
gyp verb cli '--libsass_cflags=',
gyp verb cli '--libsass_ldflags=',
gyp verb cli '--libsass_library=' ]
gyp info using node-gyp@3.8.0
gyp info using node@10.13.0 | win32 | x64
gyp verb command rebuild []
gyp verb command clean []
gyp verb clean removing "build" directory
gyp verb command configure []
gyp verb check python checking for Python executable "python2" in the PATH
gyp verb `which` failed Error: not found: python2
gyp verb `which` failed at getNotFoundError (C:\dev\angular\my-app5\node_modules\which\which.js:13:12)
gyp verb `which` failed at F (C:\dev\angular\my-app5\node_modules\which\which.js:68:19)
gyp verb `which` failed at E (C:\dev\angular\my-app5\node_modules\which\which.js:80:29)
gyp verb `which` failed at C:\dev\angular\my-app5\node_modules\which\which.js:89:16
gyp verb `which` failed at C:\dev\angular\my-app5\node_modules\isexe\index.js:42:5
gyp verb `which` failed at C:\dev\angular\my-app5\node_modules\isexe\windows.js:36:5
gyp verb `which` failed at FSReqWrap.oncomplete (fs.js:154:21)
gyp verb `which` failed python2 { Error: not found: python2
gyp verb `which` failed at getNotFoundError (C:\dev\angular\my-app5\node_modules\which\which.js:13:12)
gyp verb `which` failed at F (C:\dev\angular\my-app5\node_modules\which\which.js:68:19)
gyp verb `which` failed at E (C:\dev\angular\my-app5\node_modules\which\which.js:80:29)
gyp verb `which` failed at C:\dev\angular\my-app5\node_modules\which\which.js:89:16
gyp verb `which` failed at C:\dev\angular\my-app5\node_modules\isexe\index.js:42:5
gyp verb `which` failed at C:\dev\angular\my-app5\node_modules\isexe\windows.js:36:5
gyp verb `which` failed at FSReqWrap.oncomplete (fs.js:154:21)
gyp verb `which` failed stack:
gyp verb `which` failed 'Error: not found: python2\n at getNotFoundError (C:\\dev\\angular\\my-app5\\node_modules\\which\\which.js:13:12)\n at F (C:\\dev\\angular\\my-app5\\node_modules\\which\\which.js:68:19)\n at E (C:\\dev\\angular\\my-app5\\node_modules\\which\\which.js:80:29)\n at C:\\dev\\angular\\my-app5\\node_modules\\which\\which.js:89:16\n at C:\\dev\\angular\\my-app5\\node_modules\\isexe\\index.js:42:5\n at C:\\dev\\angular\\my-app5\\node_modules\\isexe\\windows.js:36:5\n at FSReqWrap.oncomplete (fs.js:154:21)',
gyp verb `which` failed code: 'ENOENT' }
gyp verb check python checking for Python executable "python" in the PATH
gyp verb `which` failed Error: not found: python
gyp verb `which` failed at getNotFoundError (C:\dev\angular\my-app5\node_modules\which\which.js:13:12)
gyp verb `which` failed at F (C:\dev\angular\my-app5\node_modules\which\which.js:68:19)
gyp verb `which` failed at E (C:\dev\angular\my-app5\node_modules\which\which.js:80:29)
gyp verb `which` failed at C:\dev\angular\my-app5\node_modules\which\which.js:89:16
gyp verb `which` failed at C:\dev\angular\my-app5\node_modules\isexe\index.js:42:5
gyp verb `which` failed at C:\dev\angular\my-app5\node_modules\isexe\windows.js:36:5
gyp verb `which` failed at FSReqWrap.oncomplete (fs.js:154:21)
gyp verb `which` failed python { Error: not found: python
gyp verb `which` failed at getNotFoundError (C:\dev\angular\my-app5\node_modules\which\which.js:13:12)
gyp verb `which` failed at F (C:\dev\angular\my-app5\node_modules\which\which.js:68:19)
gyp verb `which` failed at E (C:\dev\angular\my-app5\node_modules\which\which.js:80:29)
gyp verb `which` failed at C:\dev\angular\my-app5\node_modules\which\which.js:89:16
gyp verb `which` failed at C:\dev\angular\my-app5\node_modules\isexe\index.js:42:5
gyp verb `which` failed at C:\dev\angular\my-app5\node_modules\isexe\windows.js:36:5
gyp verb `which` failed at FSReqWrap.oncomplete (fs.js:154:21)
gyp verb `which` failed stack:
gyp verb `which` failed 'Error: not found: python\n at getNotFoundError (C:\\dev\\angular\\my-app5\\node_modules\\which\\which.js:13:12)\n at F (C:\\dev\\angular\\my-app5\\node_modules\\which\\which.js:68:19)\n at E (C:\\dev\\angular\\my-app5\\node_modules\\which\\which.js:80:29)\n at C:\\dev\\angular\\my-app5\\node_modules\\which\\which.js:89:16\n at C:\\dev\\angular\\my-app5\\node_modules\\isexe\\index.js:42:5\n at C:\\dev\\angular\\my-app5\\node_modules\\isexe\\windows.js:36:5\n at FSReqWrap.oncomplete (fs.js:154:21)',
gyp verb `which` failed code: 'ENOENT' }
gyp verb could not find "python". checking python launcher
gyp verb could not find "python". guessing location
gyp verb ensuring that file exists: C:\Python27\python.exe
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack at PythonFinder.failNoPython (C:\dev\angular\my-app5\node_modules\node-gyp\lib\configure.js:484:19)
gyp ERR! stack at PythonFinder.<anonymous> (C:\dev\angular\my-app5\node_modules\node-gyp\lib\configure.js:509:16)
gyp ERR! stack at C:\dev\angular\my-app5\node_modules\graceful-fs\polyfills.js:282:31
gyp ERR! stack at FSReqWrap.oncomplete (fs.js:154:21)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\dev\\angular\\my-app5\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd C:\dev\angular\my-app5\node_modules\node-sass
gyp ERR! node -v v10.13.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Build failed with error code: 1
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.2 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: abbrev@1.1.1 (node_modules\fsevents\node_modules\abbrev):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename 'C:\dev\angular\my-app5\node_modules\fsevents\node_modules\abbrev' -> 'C:\dev\angular\my-app5\node_modules\fsevents\node_modules\.abbrev.DELETE'
[...]
其他详细信息
Bottom line is:
我希望ng new
从A到Z穿过我们的人工工厂,而不是从Internet上获取东西。错误日志中提到设置代理,但是该URL在我们的公司环境中被阻止。
有什么想法吗?
答案 0 :(得分:3)
我看到了问题。 node-sass
安装脚本经过硬编码,可以从github
获取。
$ npm i --verbose node-sass
...
> node scripts/install.js
Downloading binary from https://github.com/sass/node-sass/releases/download/v4.11.0/darwin-x64-64_binding.node
在检查了要运行的脚本(node_modules/node-sass/scripts/install.js
)之后,我确定可以跳过此额外的下载。它将要求计算机在本地构建它(一次安装,在初次安装时),但这应该有所帮助。
$ SKIP_SASS_BINARY_DOWNLOAD_FOR_CI=true npm i --verbose node-sass
旧答案
您可以使用.npmrc
file进行此操作。如果希望将其应用于所有项目,则将其放在用户主目录中(听起来像是您想要的)。
registry=<your registry url>
always-auth=true
_auth=<your auth string>