본문 바로가기

Programing/Node.js

솔루션 파일 error MSB5014: 파일 형식 버전을 인식할 수 없습니다.

에러화면



에러내용

build/binding.sln(1): 솔루션 파일 error MSB5014: 파일 형식 버전을 인식할 수 없습니다. MSBuild는 7.0 버전에서 9.0 버전까지의 솔루션 파일만 읽을 수 있습니다.


http://joyent.github.io/node-snmpjs

https://github.com/joyent/node-snmpjs

의 모듈을 받아서 npm install로 설치를 하려는데 위와 같은 에러가 났다.


원인을 찾아찾아 가니

> node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild


명령을 실행할 때 발생하는 것이었다.

C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js

C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js

와 같았고


결국

node "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild

명령을 실행할 때 발생하는 것이었다.


node-snmpjs 모듈이 libusdt 모듈을 의존하기 있었는데, 이 모듈 빌드시 에러가 난 것이다.

DTrace라는 이름으로 보였는데 https://github.com/chrisa/libusdt 가 본진으로 보인다.


c와 h 파일들이 보이는 것으로 보아 컴파일이 필요한 모듈로 보였다.


원인

Visual Studio 2008 명령 프롬프트로 실행을 했기에 빌드환경이 설정이 되어 있었다.

그런데 OS는 64비트이다. Node.js도 64비트로 설정을 했고 문제는 명령 프롬프트가 x86버전이었던 것이다.



이후 잘 빌드가 되었다.



결론

Java도 처음에는 Write One Run Anywhere라는 표어로 나왔지만 플랫폼에 묶이게 되었듯이 Node.js도 플랫폼에 독립적인 것 같지만 사실상 멀티 플랫폼을 고려한 크로스플랫폼에 신경을 쓸 수 밖에 없다.