skywalking-java/docs/en/FAQ/maven-compile-npm-failure.md

63 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### Problem Maven compilation failure with error like `Error: not found: python2`
When you compile the project via maven, it failed at module `apm-webapp` and the following error occured.
Pay attention to key words such as `node-sass` and `Error: not found: python2`.
```
[INFO] > node-sass@4.11.0 postinstall C:\XXX\skywalking\skywalking-ui\node_modules\node-sass
[INFO] > node scripts/build.js
[ERROR] gyp verb check python checking for Python executable "python2" in the PATH
[ERROR] gyp verb `which` failed Error: not found: python2
[ERROR] gyp verb `which` failed at getNotFoundError (C:\XXX\skywalking\skywalking-ui\node_modules\which\which.js:13:12)
[ERROR] gyp verb `which` failed at F (C:\XXX\skywalking\skywalking-ui\node_modules\which\which.js:68:19)
[ERROR] gyp verb `which` failed at E (C:\XXX\skywalking\skywalking-ui\node_modules\which\which.js:80:29)
[ERROR] gyp verb `which` failed at C:\XXX\skywalking\skywalking-ui\node_modules\which\which.js:89:16
[ERROR] gyp verb `which` failed at C:\XXX\skywalking\skywalking-ui\node_modules\isexe\index.js:42:5
[ERROR] gyp verb `which` failed at C:\XXX\skywalking\skywalking-ui\node_modules\isexe\windows.js:36:5
[ERROR] gyp verb `which` failed at FSReqWrap.oncomplete (fs.js:152:21)
[ERROR] gyp verb `which` failed code: 'ENOENT' }
[ERROR] gyp verb check python checking for Python executable "python" in the PATH
[ERROR] gyp verb `which` succeeded python C:\Users\XXX\AppData\Local\Programs\Python\Python37\python.EXE
[ERROR] gyp ERR! configure error
[ERROR] gyp ERR! stack Error: Command failed: C:\Users\XXX\AppData\Local\Programs\Python\Python37\python.EXE -c import sys; print "%s.%s.%s" % sys.version_info[:3];
[ERROR] gyp ERR! stack File "<string>", line 1
[ERROR] gyp ERR! stack import sys; print "%s.%s.%s" % sys.version_info[:3];
[ERROR] gyp ERR! stack ^
[ERROR] gyp ERR! stack SyntaxError: invalid syntax
[ERROR] gyp ERR! stack
[ERROR] gyp ERR! stack at ChildProcess.exithandler (child_process.js:275:12)
[ERROR] gyp ERR! stack at emitTwo (events.js:126:13)
[ERROR] gyp ERR! stack at ChildProcess.emit (events.js:214:7)
[ERROR] gyp ERR! stack at maybeClose (internal/child_process.js:925:16)
[ERROR] gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
[ERROR] gyp ERR! System Windows_NT 10.0.17134
......
[INFO] server-starter-es7 ................................. SUCCESS [ 11.657 s]
[INFO] apm-webapp ......................................... FAILURE [ 25.857 s]
[INFO] apache-skywalking-apm .............................. SKIPPED
[INFO] apache-skywalking-apm-es7 .......................... SKIPPED
```
### Reason
It has nothing to do with SkyWalking.
According to https://github.com/sass/node-sass/issues/1176, if you live in countries where requesting resources from `GitHub` and `npmjs.org` is very slowly, some precompiled binaries for dependency `node-sass` will fail to be downloaded during `npm install`, then npm will try to compile them itself. That's why `python2` is needed.
### Resolve
#### 1. Use mirror. Such as in China, please edit `skywalking\apm-webapp\pom.xml`
Find
```
<configuration>
<arguments>install --registry=https://registry.npmjs.org/</arguments>
</configuration>
```
Replace it with
```
<configuration>
<arguments>install --registry=https://registry.npm.taobao.org/ --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/</arguments>
</configuration>
```
#### 2. Get an enough powerful VPN