sorccu/node-jpeg-turbo

Windows instructions for installations results in error & prebuilt releases throwing 404s

Opened this issue · 15 comments

I've followed the steps in the windows installation and have yasm available and my msvs_version is 2015. Performing the installation on stf using npm install --save jpeg-turbo results in the following error messages.

While installing jpeg-turbo using npm in the stf repository.

> jpeg-turbo@0.4.0 install C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo
> node-pre-gyp install --fallback-to-build

Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo\build\Release\obj/global_intermediate/jfdctflt-sse-64.obj"
  yasm: FATAL: unable to open include file `jsimdcfg.inc'
C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo\build\deps\jpeg-turbo.targets(28,5): error MSB3721: The command "call "yasm" "-felf" "-o" "C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_module
s\jpeg-turbo\build\Release\obj\global_intermediate\jfdctflt-sse-64.obj" "..\..\deps\libjpeg-turbo\simd\jfdctflt-sse-64.asm"" exited with code 1. [C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo\build\deps\
jpeg-turbo.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\node-gyp\lib\build.js:285:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:194:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Windows_NT 10.0.14393
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\t-sus\\Documents\\OpenSource\\GameAutomators\\stf\\node_modules\\node-gyp\\bin\\node-gyp.js" "build" "--fallback-to-build" "--module=C:\\Users\\t-sus\\Documents\\OpenSource\\GameAutomators\\stf\\node_modules\\jpeg-turbo\\lib\\binding\\node-v51-win32-x64\\jpegturbo.node" "--module_name=jpegturbo" "--module_path=C:\\Users\\t-sus\\Documents\\OpenSource\\GameAutomators\\stf\\node_modules\\jpeg-turbo\\lib\\binding\\node-v51-win32-x64"
gyp ERR! cwd C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo
gyp ERR! node -v v7.8.0
gyp ERR! node-gyp -v v3.6.0
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute 'C:\Program Files\nodejs\node.exe C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\node-gyp\bin\node-gyp.js build --fallback-to-build --module=C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo\lib\binding\node-v51-win32-x64\jpegturbo.node --module_name=jpegturbo --module_path=C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo\lib\binding\node-v51-win32-x64' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo\node_modules\node-pre-gyp\lib\util\compile.js:83:29)
node-pre-gyp ERR! stack     at emitTwo (events.js:106:13)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:194:7)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:899:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
node-pre-gyp ERR! System Windows_NT 10.0.14393
node-pre-gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\t-sus\\Documents\\OpenSource\\GameAutomators\\stf\\node_modules\\jpeg-turbo\\node_modules\\node-pre-gyp\\bin\\node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo
node-pre-gyp ERR! node -v v7.8.0
node-pre-gyp ERR! node-pre-gyp -v v0.6.19
node-pre-gyp ERR! not ok
Failed to execute 'C:\Program Files\nodejs\node.exe C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\node-gyp\bin\node-gyp.js build --fallback-to-build --module=C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo\lib\binding\node-v51-win32-x64\jpegturbo.node --module_name=jpegturbo --module_path=C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo\lib\binding\node-v51-win32-x64' (1)
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.1: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN Error: EPERM: operation not permitted, lstat 'C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo\node_modules\node-pre-gyp\node_modules\tar-pack\node_modules\rimraf\node_modules\glob\node_modules\minimatch\node_modules\brace-expansion\node_modules'
npm WARN  { Error: EPERM: operation not permitted, lstat 'C:\Users\t-sus\Documents\OpenSource\GameAutomators\stf\node_modules\jpeg-turbo\node_modules\node-pre-gyp\node_modules\tar-pack\node_modules\rimraf\node_modules\glob\node_modules\minimatch\node_modules\brace-expansion\node_modules'
npm WARN   errno: -4048,
npm WARN   code: 'EPERM',
npm WARN   syscall: 'lstat',
npm WARN   path: 'C:\\Users\\t-sus\\Documents\\OpenSource\\GameAutomators\\stf\\node_modules\\jpeg-turbo\\node_modules\\node-pre-gyp\\node_modules\\tar-pack\\node_modules\\rimraf\\node_modules\\glob\\node_modules\\minimatch\\node_modules\\brace-expansion\\node_modules' }
npm ERR! Windows_NT 10.0.14393
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "--save" "jpeg-turbo"
npm ERR! node v7.8.0
npm ERR! npm  v4.2.0
npm ERR! code ELIFECYCLE
npm ERR! errno 1

npm ERR! jpeg-turbo@0.4.0 install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the jpeg-turbo@0.4.0 install script 'node-pre-gyp install --fallback-to-build'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the jpeg-turbo package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-pre-gyp install --fallback-to-build
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs jpeg-turbo
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls jpeg-turbo
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     C:\Users\t-sus\AppData\Roaming\npm-cache\_logs\2017-04-03T09_05_09_628Z-debug.log

Errors while building node-jpeg-turbo.

C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo>npm install

> jpeg-turbo@0.4.0 install C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo
> node ./prebuilt-bindings install

[prebuilt-bindings] => Testing 'C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\jpegturbo.node'...
[prebuilt-bindings] => Binding not found or incompatible
[prebuilt-bindings] => Downloading 'https://github.com/sorccu/node-jpeg-turbo/releases/download/v0.4.0/jpegturbo-51-win32-x64.node.gz'...
[prebuilt-bindings] => Server responded with '404 Not Found'
[prebuilt-bindings] => Downloading 'https://github.com/sorccu/node-jpeg-turbo/releases/download/v0.4.0/jpegturbo-51-win32-x64.node'...
[prebuilt-bindings] => Server responded with '404 Not Found'
[prebuilt-bindings] => Unable to install prebuilt bindings: Error: No compatible bindings found
[prebuilt-bindings] => Building from source...

C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "" rebuild )
gyp ERR! clean error
gyp ERR! stack Error: EPERM: operation not permitted, unlink 'C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\jpegturbo.node'
gyp ERR! System Windows_NT 10.0.14393
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo
gyp ERR! node -v v7.8.0
gyp ERR! node-gyp -v v3.5.0
gyp ERR! not ok
Usage: prebuilt-bindings [command...]

Commands:
  build     Builds bindings locally.
  clean     Removes installed bindings.
  config    Prints out the resolved config. Can be useful to understand what
            prebuilt-bindings sees.
  install   Installs prebuilt bindings or builds them if none can be found.
            Default command if none is given.
  pack      Packs configured bindings into properly named individual archives
            for easy deployment.

Error: node-gyp failed with status 1

npm ERR! Windows_NT 10.0.14393
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! node v7.8.0
npm ERR! npm  v4.2.0
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! jpeg-turbo@0.4.0 install: `node ./prebuilt-bindings install`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the jpeg-turbo@0.4.0 install script 'node ./prebuilt-bindings install'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the jpeg-turbo package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node ./prebuilt-bindings install
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs jpeg-turbo
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls jpeg-turbo
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     C:\Users\t-sus\AppData\Roaming\npm-cache\_logs\2017-04-03T09_06_32_317Z-debug.log

Can you please tell me where I am going wrong here in the setup on windows ? I've been trying this for a few days now. I could successfully run it on mac. Should the prebuilt URLs be fixed for installations to work properly ?

I am on the master branch of this repo and I still see a failure when I do npm install. I've deleted the node_modules directory and tried it again but I receive an error in prebuilt-bindings

C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "" rebuild )
gyp ERR! clean error
gyp ERR! stack Error: EPERM: operation not permitted, unlink 'C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\jpegturbo.node'
gyp ERR! System Windows_NT 10.0.14393
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo
gyp ERR! node -v v7.8.0
gyp ERR! node-gyp -v v3.5.0
gyp ERR! not ok
Usage: prebuilt-bindings [command...]

It will take several days if not weeks till I have time to look into this. As you can see from STF's README we don't officially support Windows. I myself have to use a VM to do any kind of Windows-related work, which is annoying. It would be best if you could try to look into this yourself for now.

Sure @sorccu I'll definitely have a look through this. Can you point me to where the issue could potentially be so that I could get a headstart to this. I will take some time today to look into prebuilt-bindings

@sorccu There has been some progress so far. The steps i've taken are to install MSYS2 and using pacman available on that install the tools using the command pacman --noconfirm -S autoconf automake libtool zip

Then I added the MSYS2\usr\bin bin path to the environment variables so that's the tools are available in the cmd shell. After which I ran the npm install --update-binary command which resulted in the Release of Release\jpegturbo.node in the build\Release\ directory along with the obj folder and other map and exp files. Since this has successfully built on my machine. How do I then use this in the node_modules directory in stf as jpeg-turbo. Can you please help with that? Also I had to revert HEAD commit to e5018cd

C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo>npm install --update-binary

> jpeg-turbo@0.4.0 install C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo
> node-pre-gyp install --fallback-to-build

node-pre-gyp ERR! Tried to download(403): https://pre-gyp.s3.amazonaws.com/jpegturbo/v0.4.0/jpegturbo-v0.4.0-node-v51-win32-x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for jpeg-turbo@0.4.0 and node@7.8.0 (node-v51 ABI) (falling back to source compile with node-gyp)

C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" clean )  else (node "" clean )

C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" configure --fallback-to-build --module=C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\lib\binding\node-v51-win32-x64\jpegturbo.node --module_name=jpegturbo --module_path=C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\lib\binding\node-v51-win32-x64 --python=C:\Users\t-sus\.windows-build-tools\python27\python.exe --msvs_version=2015 )  else (node "" configure --fallback-to-build --module=C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\lib\binding\node-v51-win32-x64\jpegturbo.node --module_name=jpegturbo --module_path=C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\lib\binding\node-v51-win32-x64 --python=C:\Users\t-sus\.windows-build-tools\python27\python.exe --msvs_version=2015 )

C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" build --fallback-to-build --module=C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\lib\binding\node-v51-win32-x64\jpegturbo.node --module_name=jpegturbo --module_path=C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\lib\binding\node-v51-win32-x64 )  else (node "" build --fallback-to-build --module=C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\lib\binding\node-v51-win32-x64\jpegturbo.node --module_name=jpegturbo --module_path=C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\lib\binding\node-v51-win32-x64 )
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jccolor-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jcgray-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jcsample-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jdcolor-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jdmerge-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jdsample-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jfdctflt-sse-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jfdctfst-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jfdctint-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jidctflt-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jidctfst-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jidctint-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jidctred-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jquantf-sse2-64.obj"
  Building "C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\obj/global_intermediate/jquanti-sse2-64.obj"
  jcapimin.c
  jcapistd.c
  jccoefct.c
  jccolor.c
  jcdctmgr.c
  jchuff.c
  jcinit.c
  jcmainct.c
  jcmarker.c
  jcmaster.c
  jcomapi.c
  jcparam.c
  jcphuff.c
  jcprepct.c
  jcsample.c
  jctrans.c
  jdapimin.c
  jdapistd.c
  jdatadst.c
  jdatasrc.c
  jdcoefct.c
  jdcolor.c
  jddctmgr.c
  jdhuff.c
  jdinput.c
  jdmainct.c
  jdmarker.c
  jdmaster.c
  jdmerge.c
  jdphuff.c
  jdpostct.c
  jdsample.c
  jdtrans.c
  jerror.c
  jfdctflt.c
  jfdctfst.c
  jfdctint.c
  jidctflt.c
  jidctfst.c
  jidctint.c
  jidctred.c
  jquant1.c
  jquant2.c
  jutils.c
  jmemmgr.c
  jmemnobs.c
  jaricom.c
  jcarith.c
  jdarith.c
  turbojpeg.c
  transupp.c
  jdatadst-tj.c
  jdatasrc-tj.c
  jsimd_x86_64.c
  win_delay_load_hook.cc
  jpeg-turbo.vcxproj -> C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\\libjpeg-turbo.lib
  buffersize.cc
  compress.cc
  decompress.cc
  exports.cc
  win_delay_load_hook.cc
     Creating library C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\jpegturbo.lib and object C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\jpegturbo.exp
  Generating code
  Finished generating code
  jpegturbo.vcxproj -> C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\\jpegturbo.node
  jpegturbo.vcxproj -> C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\jpegturbo.pdb (Full PDB)
  Copying C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo\build\Release\/jpegturbo.node to C:/Users/t-sus/Documents/OpenSource/GameAutomators/node-jpeg-turbo/lib/binding/node-v51-win32-x64\jpegturbo.node
          1 file(s) copied.

C:\Users\t-sus\Documents\OpenSource\GameAutomators\node-jpeg-turbo>

I am having the same "yasm: FATAL: unable to open include file `jsimdcfg.inc'" error when trying to compile node-jpeg-turbo in appveyor. Any tips or ideas? It seems like something that should be relatively easy to fix. Since it's just not finding a file that should be present in libjpeg-turbo.. But I don't know where to start.

If there are any maintainers around?

I don’t like the word “maintainer”. It makes it sound like it’s my eternal responsibility to ensure that the software keeps working. I think “creator” would be appropriate.

I no longer have access to a Windows machine. Please investigate and provide a patch.

Like it or not, that's the common word for it. But sure, creator! :) If you want, I can provide you access to a windows machine over RDP. Other than that we've put out a bounty for it. It's not much right now, but maybe it will grow :) https://www.bountysource.com/issues/74913928-problem-compiling-on-windows

That’s a pretty decent thing you’ve done there! I’m sure someone will take a look sooner or later.

Yeah, let's hope so! Thanks anyway. ($500 now)

I found some time to try setting this up on windows and after quite some trouble managed to get this working. I will try to be as accurate with the steps in this comment which can ensure that this node module can be set up on windows and how I managed to get it working.

Test Setup

For setting this up, I started with a fresh windows VM on Azure D2 v2 running the following configuration

OS Name	Microsoft Windows 10 Pro
Version	10.0.17763 Build 17763
System Manufacturer	Microsoft Corporation
System Model	Virtual Machine
System Type	x64-based PC
Processor	Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz, 2295 Mhz, 2 Core(s), 2 Logical Processor(s)

Windows installation instructions

  1. Install git on windows (I installed 2.2.0-64 during this setup)
  2. Install Yasm Win64 from yasm download page
  3. Download the VS Community IDE from this link which is provided under the heading Visual Studio 2015, 2017 and 2019
  4. Add the yasm binary to the PATH so that it can be accessed from the cmd or powershell
  5. Download the corresponding security patch to fix the MSVCR100.dll issue. I downloaded this from this link and the links to the corresponding x64.x86 are provided on the previous link in step 3.
  6. At this point, check if the yasm works correctly. Running it should give the following message instead of a popup with the dll error. I renamed the binary yasm_version..... to yasm and placed it in C:\3rdpartybinaries which I added to the PATH
C:\Users\sudheesh>yasm
yasm: No input files specified
  1. In the visual studio installation, install the C++, Node.js requirements. However I installed more than these. Here's my exported .vsconfig for Visual Studio Community 2019 which can be imported into your installation.
{
  "version": "1.0",
  "components": [
    "Microsoft.VisualStudio.Component.CoreEditor",
    "Microsoft.VisualStudio.Workload.CoreEditor",
    "Microsoft.VisualStudio.Component.NuGet",
    "Microsoft.Net.Component.4.6.1.TargetingPack",
    "Microsoft.VisualStudio.Component.Roslyn.Compiler",
    "Microsoft.VisualStudio.Component.Roslyn.LanguageServices",
    "Microsoft.VisualStudio.Component.FSharp",
    "Microsoft.Net.Core.Component.SDK.2.1",
    "Microsoft.NetCore.ComponentGroup.DevelopmentTools.2.1",
    "Microsoft.VisualStudio.Component.FSharp.WebTemplates",
    "Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions",
    "Microsoft.VisualStudio.Component.DockerTools",
    "Microsoft.NetCore.ComponentGroup.Web.2.1",
    "Microsoft.Net.Component.4.7.2.SDK",
    "Microsoft.Net.Component.4.7.2.TargetingPack",
    "Microsoft.Net.ComponentGroup.DevelopmentPrerequisites",
    "Microsoft.VisualStudio.Component.TypeScript.3.4",
    "Microsoft.VisualStudio.Component.JavaScript.TypeScript",
    "Microsoft.VisualStudio.Component.JavaScript.Diagnostics",
    "Microsoft.Component.MSBuild",
    "Microsoft.VisualStudio.Component.TextTemplating",
    "Component.Microsoft.VisualStudio.RazorExtension",
    "Microsoft.VisualStudio.Component.IISExpress",
    "Microsoft.VisualStudio.Component.SQL.ADAL",
    "Microsoft.VisualStudio.Component.SQL.LocalDB.Runtime",
    "Microsoft.VisualStudio.Component.Common.Azure.Tools",
    "Microsoft.VisualStudio.Component.SQL.CLR",
    "Microsoft.VisualStudio.Component.MSODBC.SQL",
    "Microsoft.VisualStudio.Component.MSSQL.CMDLnUtils",
    "Microsoft.VisualStudio.Component.ManagedDesktop.Core",
    "Microsoft.Net.Component.4.5.2.TargetingPack",
    "Microsoft.Net.Component.4.5.TargetingPack",
    "Microsoft.VisualStudio.Component.SQL.SSDT",
    "Microsoft.VisualStudio.Component.SQL.DataSources",
    "Component.Microsoft.Web.LibraryManager",
    "Microsoft.VisualStudio.ComponentGroup.Web",
    "Microsoft.VisualStudio.Component.Web",
    "Microsoft.Net.Component.4.TargetingPack",
    "Microsoft.Net.Component.4.5.1.TargetingPack",
    "Microsoft.Net.Component.4.6.TargetingPack",
    "Microsoft.Net.ComponentGroup.TargetingPacks.Common",
    "Component.Microsoft.VisualStudio.Web.AzureFunctions",
    "Microsoft.VisualStudio.ComponentGroup.AzureFunctions",
    "Microsoft.VisualStudio.Component.Azure.Compute.Emulator",
    "Microsoft.VisualStudio.Component.Azure.Storage.Emulator",
    "Microsoft.VisualStudio.Component.Azure.ClientLibs",
    "Microsoft.VisualStudio.Component.Azure.AuthoringTools",
    "Microsoft.VisualStudio.Component.CloudExplorer",
    "Microsoft.VisualStudio.ComponentGroup.Web.CloudTools",
    "Microsoft.VisualStudio.Component.IntelliCode",
    "Microsoft.VisualStudio.Component.DiagnosticTools",
    "Microsoft.VisualStudio.Component.EntityFramework",
    "Microsoft.VisualStudio.Component.AspNet45",
    "Microsoft.VisualStudio.Component.AppInsights.Tools",
    "Microsoft.VisualStudio.Component.WebDeploy",
    "Component.Microsoft.VisualStudio.LiveShare",
    "Microsoft.VisualStudio.Component.Wcf.Tooling",
    "Microsoft.Net.Core.Component.SDK.2.2",
    "Microsoft.NetCore.ComponentGroup.DevelopmentTools.2.2",
    "Microsoft.NetCore.ComponentGroup.Web.2.2",
    "Microsoft.Net.Component.4.6.1.SDK",
    "Microsoft.Net.ComponentGroup.4.6.1.DeveloperTools",
    "Microsoft.Net.Component.4.6.2.SDK",
    "Microsoft.Net.Component.4.6.2.TargetingPack",
    "Microsoft.Net.ComponentGroup.4.6.2.DeveloperTools",
    "Microsoft.Net.Component.4.7.SDK",
    "Microsoft.Net.Component.4.7.TargetingPack",
    "Microsoft.Net.ComponentGroup.4.7.DeveloperTools",
    "Microsoft.Net.Component.4.7.1.SDK",
    "Microsoft.Net.Component.4.7.1.TargetingPack",
    "Microsoft.Net.ComponentGroup.4.7.1.DeveloperTools",
    "Microsoft.VisualStudio.ComponentGroup.AdditionalWebProjectTemplates",
    "Microsoft.VisualStudio.Workload.NetWeb",
    "Microsoft.VisualStudio.ComponentGroup.Azure.Prerequisites",
    "Microsoft.VisualStudio.Component.Azure.Waverton.BuildTools",
    "Microsoft.VisualStudio.Component.Azure.Waverton",
    "Microsoft.Component.Azure.DataLake.Tools",
    "Microsoft.VisualStudio.Component.Azure.Kubernetes.Tools",
    "Microsoft.VisualStudio.Component.Azure.ResourceManager.Tools",
    "Microsoft.VisualStudio.ComponentGroup.Azure.ResourceManager.Tools",
    "Microsoft.VisualStudio.ComponentGroup.Azure.CloudServices",
    "Microsoft.VisualStudio.Component.Azure.ServiceFabric.Tools",
    "Microsoft.VisualStudio.Component.Azure.Storage.AzCopy",
    "Microsoft.VisualStudio.Workload.Azure",
    "Microsoft.Component.PythonTools",
    "Microsoft.Component.PythonTools.Miniconda",
    "Microsoft.Component.PythonTools.Web",
    "Microsoft.VisualStudio.Component.VC.CoreIde",
    "Microsoft.VisualStudio.Component.Windows10SDK",
    "Microsoft.Component.VC.Runtime.UCRTSDK",
    "Microsoft.VisualStudio.Component.VC.140",
    "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
    "Microsoft.VisualStudio.Component.Graphics.Tools",
    "Microsoft.VisualStudio.Component.VC.DiagnosticTools",
    "Microsoft.VisualStudio.Component.Windows10SDK.17763",
    "Microsoft.ComponentGroup.PythonTools.NativeDevelopment",
    "Component.CPython3.x64",
    "Component.CPython3.x86",
    "Microsoft.VisualStudio.Workload.Python",
    "Microsoft.VisualStudio.Component.Node.Tools",
    "Microsoft.VisualStudio.Workload.Node",
    "Microsoft.VisualStudio.Component.ManagedDesktop.Prerequisites",
    "Microsoft.ComponentGroup.Blend",
    "Microsoft.VisualStudio.Component.Debugger.JustInTime",
    "Microsoft.VisualStudio.Component.FSharp.Desktop",
    "Component.Dotfuscator",
    "Microsoft.VisualStudio.Component.PortableLibrary",
    "Microsoft.VisualStudio.Workload.ManagedDesktop",
    "Microsoft.VisualStudio.Component.VC.Redist.14.Latest",
    "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core",
    "Microsoft.VisualStudio.Component.VC.CMake.Project",
    "Microsoft.VisualStudio.Component.VC.ATL",
    "Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest",
    "Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest",
    "Microsoft.VisualStudio.Component.VC.ATLMFC",
    "Microsoft.VisualStudio.Component.VC.CLI.Support",
    "Microsoft.VisualStudio.Component.VC.Modules.x86.x64",
    "Microsoft.VisualStudio.Component.VC.Llvm.Clang",
    "Component.IncredibuildMenu",
    "Component.Incredibuild",
    "Microsoft.VisualStudio.Component.Windows10SDK.17134",
    "Microsoft.VisualStudio.Component.Windows10SDK.16299",
    "Microsoft.VisualStudio.Component.VC.v141.x86.x64",
    "Microsoft.VisualStudio.Workload.NativeDesktop",
    "Microsoft.Component.NetFX.Native",
    "Microsoft.VisualStudio.ComponentGroup.UWP.NetCoreAndStandard",
    "Microsoft.VisualStudio.Component.Graphics",
    "Microsoft.VisualStudio.ComponentGroup.UWP.Xamarin",
    "Microsoft.VisualStudio.ComponentGroup.UWP.Support",
    "Microsoft.VisualStudio.Component.Windows10SDK.IpOverUsb",
    "Microsoft.VisualStudio.Component.VC.Tools.ARM64",
    "Microsoft.VisualStudio.Component.UWP.VC.ARM64",
    "Microsoft.VisualStudio.Component.VC.Tools.ARM",
    "Microsoft.VisualStudio.ComponentGroup.UWP.VC",
    "Microsoft.VisualStudio.Component.VC.v141.ARM",
    "Microsoft.VisualStudio.Component.VC.v141.ARM64",
    "Microsoft.VisualStudio.ComponentGroup.UWP.VC.v141",
    "Microsoft.VisualStudio.Component.Windows10SDK.18362",
    "Microsoft.VisualStudio.Workload.Universal",
    "Component.MDD.Linux",
    "Component.Linux.CMake",
    "Component.MDD.Linux.GCC.arm",
    "Microsoft.VisualStudio.Workload.NativeCrossPlat"
  ]
}
  1. I prefer to install node via nvm. You could install the same via nvm for windows version 1.1.7
  2. Run nvm install 12.4.0 which comes with npm 6.9.0
  3. Run nvm use 12.4.0
  4. Install the windows build tools in Administrator mode from an elevated powershell or command line by doing
npm install -g windows-build-tools
  1. Additionally after successfully setting up the required build tools install node-gyp system wide by doing
npm install -g node-gyp
  1. Now clone the sorccu/node-jpeg-turbo repo by using git clone over https or ssh
git clone --recursive https://github.com/sorccu/node-jpeg-turbo
  1. Install CMake from cmake downloads and add it to the path if its not automatically added. I installed the following
C:\Users\sudheesh>cmake --version
cmake version 3.15.0-rc1

CMake suite maintained and supported by Kitware (kitware.com/cmake).
  1. Install NASM from nasm download for version 2.14.02. We would need this to build libjpeg-turbo
  2. Additionally add the location to the cl.exe which is needed during the build to the PATH. In a general installation this would be available at the following link
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\bin\Hostx86\x86
  1. At this point, the environment path variable could look as follows for the user variables and system variables:

env_path
env_path_sys

  1. Find and Open the x64 Native Tools Command Prompt for VS2017 which would be available at the following general installation location in elevated mode.
    C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2017\Visual Studio Tools\VC
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
  1. cd to the directory for this module which was cloned in step 13.
  2. cd deps\libjpeg-turbo
  3. mkdir build
  4. cd build
  5. Run cmake to build the libjpeg-turbo by doing
cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..\

which runs the following:

CMake Deprecation Warning at CMakeLists.txt:8 (cmake_policy):
  The OLD behavior for policy CMP0022 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.


-- The C compiler identification is MSVC 19.16.27031.1
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- CMAKE_BUILD_TYPE = Release
-- VERSION = 1.4.80, BUILD = 20190613
-- Arithmetic encoding support enabled
-- Arithmetic decoding support enabled
-- TurboJPEG C wrapper enabled
-- TurboJPEG Java wrapper disabled
-- In-memory source/destination managers enabled
-- 64-bit build
-- Install directory = c:/libjpeg-turbo64
-- Building x86_64 SIMD extensions
-- Configuring done
-- Generating done
-- Build files have been written to: ..../node-jpeg-turbo/deps/libjpeg-turbo/build
  1. Run nmake from this directory after successful completion of the previous step
node-jpeg-turbo/deps/libjpeg-turbo/build> nmake

Microsoft (R) Program Maintenance Utility Version 14.16.27031.1
Copyright (C) Microsoft Corporation.  All rights reserved.

Scanning dependencies of target simd
[  0%] Generating jfdctflt-sse-64.obj
[  1%] Generating jccolor-sse2-64.obj
[  1%] Generating jcgray-sse2-64.obj
[  1%] Generating jcsample-sse2-64.obj
[  2%] Generating jdcolor-sse2-64.obj
[  2%] Generating jdmerge-sse2-64.obj
[  3%] Generating jdsample-sse2-64.obj
[  3%] Generating jfdctfst-sse2-64.obj
[  3%] Generating jfdctint-sse2-64.obj
[  4%] Generating jidctflt-sse2-64.obj
[  4%] Generating jidctfst-sse2-64.obj
[  5%] Generating jidctint-sse2-64.obj
[  5%] Generating jidctred-sse2-64.obj
[  5%] Generating jquantf-sse2-64.obj
[  6%] Generating jquanti-sse2-64.obj
[  6%] Built target simd
Scanning dependencies of target jpeg-static
[  7%] Building C object CMakeFiles/jpeg-static.dir/jcapimin.c.obj
jcapimin.c
[  7%] Building C object CMakeFiles/jpeg-static.dir/jcapistd.c.obj
jcapistd.c
[  8%] Building C object CMakeFiles/jpeg-static.dir/jccoefct.c.obj
jccoefct.c
[  8%] Building C object CMakeFiles/jpeg-static.dir/jccolor.c.obj
jccolor.c
[  8%] Building C object CMakeFiles/jpeg-static.dir/jcdctmgr.c.obj
jcdctmgr.c
C:\Users\sudheesh\Desktop\node-jpeg-turbo\deps\libjpeg-turbo\jcdctmgr.c(187): warning C4146: unary minus operator applied to unsigned type, result still unsigned
C:\Users\sudheesh\Desktop\node-jpeg-turbo\deps\libjpeg-turbo\jcdctmgr.c(187): warning C4307: '*': integral constant overflow
[  9%] Building C object CMakeFiles/jpeg-static.dir/jchuff.c.obj
jchuff.c
[  9%] Building C object CMakeFiles/jpeg-static.dir/jcinit.c.obj
jcinit.c
[ 10%] Building C object CMakeFiles/jpeg-static.dir/jcmainct.c.obj
jcmainct.c
[ 10%] Building C object CMakeFiles/jpeg-static.dir/jcmarker.c.obj
jcmarker.c
[ 10%] Building C object CMakeFiles/jpeg-static.dir/jcmaster.c.obj
jcmaster.c
[ 11%] Building C object CMakeFiles/jpeg-static.dir/jcomapi.c.obj
jcomapi.c
[ 11%] Building C object CMakeFiles/jpeg-static.dir/jcparam.c.obj
jcparam.c
[ 12%] Building C object CMakeFiles/jpeg-static.dir/jcphuff.c.obj
jcphuff.c
[ 12%] Building C object CMakeFiles/jpeg-static.dir/jcprepct.c.obj
jcprepct.c
[ 12%] Building C object CMakeFiles/jpeg-static.dir/jcsample.c.obj
jcsample.c
[ 13%] Building C object CMakeFiles/jpeg-static.dir/jctrans.c.obj
jctrans.c
[ 13%] Building C object CMakeFiles/jpeg-static.dir/jdapimin.c.obj
jdapimin.c
[ 14%] Building C object CMakeFiles/jpeg-static.dir/jdapistd.c.obj
jdapistd.c
[ 14%] Building C object CMakeFiles/jpeg-static.dir/jdatadst.c.obj
jdatadst.c
[ 14%] Building C object CMakeFiles/jpeg-static.dir/jdatasrc.c.obj
jdatasrc.c
[ 15%] Building C object CMakeFiles/jpeg-static.dir/jdcoefct.c.obj
jdcoefct.c
[ 15%] Building C object CMakeFiles/jpeg-static.dir/jdcolor.c.obj
jdcolor.c
[ 16%] Building C object CMakeFiles/jpeg-static.dir/jddctmgr.c.obj
jddctmgr.c
[ 16%] Building C object CMakeFiles/jpeg-static.dir/jdhuff.c.obj
jdhuff.c
[ 16%] Building C object CMakeFiles/jpeg-static.dir/jdinput.c.obj
jdinput.c
[ 17%] Building C object CMakeFiles/jpeg-static.dir/jdmainct.c.obj
jdmainct.c
[ 17%] Building C object CMakeFiles/jpeg-static.dir/jdmarker.c.obj
jdmarker.c
[ 18%] Building C object CMakeFiles/jpeg-static.dir/jdmaster.c.obj
jdmaster.c
[ 18%] Building C object CMakeFiles/jpeg-static.dir/jdmerge.c.obj
jdmerge.c
[ 18%] Building C object CMakeFiles/jpeg-static.dir/jdphuff.c.obj
jdphuff.c
[ 19%] Building C object CMakeFiles/jpeg-static.dir/jdpostct.c.obj
jdpostct.c
[ 19%] Building C object CMakeFiles/jpeg-static.dir/jdsample.c.obj
jdsample.c
[ 20%] Building C object CMakeFiles/jpeg-static.dir/jdtrans.c.obj
jdtrans.c
[ 20%] Building C object CMakeFiles/jpeg-static.dir/jerror.c.obj
jerror.c
[ 20%] Building C object CMakeFiles/jpeg-static.dir/jfdctflt.c.obj
jfdctflt.c
[ 21%] Building C object CMakeFiles/jpeg-static.dir/jfdctfst.c.obj
jfdctfst.c
[ 21%] Building C object CMakeFiles/jpeg-static.dir/jfdctint.c.obj
jfdctint.c
[ 22%] Building C object CMakeFiles/jpeg-static.dir/jidctflt.c.obj
jidctflt.c
[ 22%] Building C object CMakeFiles/jpeg-static.dir/jidctfst.c.obj
jidctfst.c
[ 23%] Building C object CMakeFiles/jpeg-static.dir/jidctint.c.obj
jidctint.c
[ 23%] Building C object CMakeFiles/jpeg-static.dir/jidctred.c.obj
jidctred.c
[ 23%] Building C object CMakeFiles/jpeg-static.dir/jquant1.c.obj
jquant1.c
[ 24%] Building C object CMakeFiles/jpeg-static.dir/jquant2.c.obj
jquant2.c
[ 24%] Building C object CMakeFiles/jpeg-static.dir/jutils.c.obj
jutils.c
[ 25%] Building C object CMakeFiles/jpeg-static.dir/jmemmgr.c.obj
jmemmgr.c
[ 25%] Building C object CMakeFiles/jpeg-static.dir/jmemnobs.c.obj
jmemnobs.c
[ 25%] Building C object CMakeFiles/jpeg-static.dir/jaricom.c.obj
jaricom.c
[ 26%] Building C object CMakeFiles/jpeg-static.dir/jcarith.c.obj
jcarith.c
[ 26%] Building C object CMakeFiles/jpeg-static.dir/jdarith.c.obj
jdarith.c
[ 27%] Building C object CMakeFiles/jpeg-static.dir/simd/jsimd_x86_64.c.obj
jsimd_x86_64.c
[ 27%] Linking C static library jpeg-static.lib
[ 27%] Built target jpeg-static
Scanning dependencies of target turbojpeg
[ 27%] Building C object CMakeFiles/turbojpeg.dir/turbojpeg.c.obj
turbojpeg.c
[ 27%] Building C object CMakeFiles/turbojpeg.dir/transupp.c.obj
transupp.c
[ 28%] Building C object CMakeFiles/turbojpeg.dir/jdatadst-tj.c.obj
jdatadst-tj.c
[ 28%] Building C object CMakeFiles/turbojpeg.dir/jdatasrc-tj.c.obj
jdatasrc-tj.c
[ 29%] Linking C shared library turbojpeg.dll
   Creating library turbojpeg.lib and object turbojpeg.exp
[ 29%] Built target turbojpeg
Scanning dependencies of target tjunittest
[ 30%] Building C object CMakeFiles/tjunittest.dir/tjunittest.c.obj
tjunittest.c
[ 30%] Building C object CMakeFiles/tjunittest.dir/tjutil.c.obj
tjutil.c
[ 30%] Linking C executable tjunittest.exe
[ 30%] Built target tjunittest
Scanning dependencies of target tjbench
[ 30%] Building C object CMakeFiles/tjbench.dir/tjbench.c.obj
tjbench.c
[ 31%] Building C object CMakeFiles/tjbench.dir/bmp.c.obj
bmp.c
[ 31%] Building C object CMakeFiles/tjbench.dir/tjutil.c.obj
tjutil.c
[ 31%] Building C object CMakeFiles/tjbench.dir/rdbmp.c.obj
rdbmp.c
[ 32%] Building C object CMakeFiles/tjbench.dir/rdppm.c.obj
rdppm.c
C:\Users\sudheesh\Desktop\node-jpeg-turbo\deps\libjpeg-turbo\rdppm.c(120): warning C4018: '>': signed/unsigned mismatch
[ 32%] Building C object CMakeFiles/tjbench.dir/wrbmp.c.obj
wrbmp.c
[ 33%] Building C object CMakeFiles/tjbench.dir/wrppm.c.obj
wrppm.c
[ 33%] Linking C executable tjbench.exe
[ 33%] Built target tjbench
Scanning dependencies of target turbojpeg-static
[ 33%] Building C object CMakeFiles/turbojpeg-static.dir/jcapimin.c.obj
jcapimin.c
[ 33%] Building C object CMakeFiles/turbojpeg-static.dir/jcapistd.c.obj
jcapistd.c
[ 34%] Building C object CMakeFiles/turbojpeg-static.dir/jccoefct.c.obj
jccoefct.c
[ 34%] Building C object CMakeFiles/turbojpeg-static.dir/jccolor.c.obj
jccolor.c
[ 35%] Building C object CMakeFiles/turbojpeg-static.dir/jcdctmgr.c.obj
jcdctmgr.c
C:\Users\sudheesh\Desktop\node-jpeg-turbo\deps\libjpeg-turbo\jcdctmgr.c(187): warning C4146: unary minus operator applied to unsigned type, result still unsigned
C:\Users\sudheesh\Desktop\node-jpeg-turbo\deps\libjpeg-turbo\jcdctmgr.c(187): warning C4307: '*': integral constant overflow
[ 35%] Building C object CMakeFiles/turbojpeg-static.dir/jchuff.c.obj
jchuff.c
[ 35%] Building C object CMakeFiles/turbojpeg-static.dir/jcinit.c.obj
jcinit.c
[ 36%] Building C object CMakeFiles/turbojpeg-static.dir/jcmainct.c.obj
jcmainct.c
[ 36%] Building C object CMakeFiles/turbojpeg-static.dir/jcmarker.c.obj
jcmarker.c
[ 37%] Building C object CMakeFiles/turbojpeg-static.dir/jcmaster.c.obj
jcmaster.c
[ 37%] Building C object CMakeFiles/turbojpeg-static.dir/jcomapi.c.obj
jcomapi.c
[ 37%] Building C object CMakeFiles/turbojpeg-static.dir/jcparam.c.obj
jcparam.c
[ 38%] Building C object CMakeFiles/turbojpeg-static.dir/jcphuff.c.obj
jcphuff.c
[ 38%] Building C object CMakeFiles/turbojpeg-static.dir/jcprepct.c.obj
jcprepct.c
[ 39%] Building C object CMakeFiles/turbojpeg-static.dir/jcsample.c.obj
jcsample.c
[ 39%] Building C object CMakeFiles/turbojpeg-static.dir/jctrans.c.obj
jctrans.c
[ 39%] Building C object CMakeFiles/turbojpeg-static.dir/jdapimin.c.obj
jdapimin.c
[ 40%] Building C object CMakeFiles/turbojpeg-static.dir/jdapistd.c.obj
jdapistd.c
[ 40%] Building C object CMakeFiles/turbojpeg-static.dir/jdatadst.c.obj
jdatadst.c
[ 41%] Building C object CMakeFiles/turbojpeg-static.dir/jdatasrc.c.obj
jdatasrc.c
[ 41%] Building C object CMakeFiles/turbojpeg-static.dir/jdcoefct.c.obj
jdcoefct.c
[ 41%] Building C object CMakeFiles/turbojpeg-static.dir/jdcolor.c.obj
jdcolor.c
[ 42%] Building C object CMakeFiles/turbojpeg-static.dir/jddctmgr.c.obj
jddctmgr.c
[ 42%] Building C object CMakeFiles/turbojpeg-static.dir/jdhuff.c.obj
jdhuff.c
[ 43%] Building C object CMakeFiles/turbojpeg-static.dir/jdinput.c.obj
jdinput.c
[ 43%] Building C object CMakeFiles/turbojpeg-static.dir/jdmainct.c.obj
jdmainct.c
[ 43%] Building C object CMakeFiles/turbojpeg-static.dir/jdmarker.c.obj
jdmarker.c
[ 44%] Building C object CMakeFiles/turbojpeg-static.dir/jdmaster.c.obj
jdmaster.c
[ 44%] Building C object CMakeFiles/turbojpeg-static.dir/jdmerge.c.obj
jdmerge.c
[ 45%] Building C object CMakeFiles/turbojpeg-static.dir/jdphuff.c.obj
jdphuff.c
[ 45%] Building C object CMakeFiles/turbojpeg-static.dir/jdpostct.c.obj
jdpostct.c
[ 45%] Building C object CMakeFiles/turbojpeg-static.dir/jdsample.c.obj
jdsample.c
[ 46%] Building C object CMakeFiles/turbojpeg-static.dir/jdtrans.c.obj
jdtrans.c
[ 46%] Building C object CMakeFiles/turbojpeg-static.dir/jerror.c.obj
jerror.c
[ 47%] Building C object CMakeFiles/turbojpeg-static.dir/jfdctflt.c.obj
jfdctflt.c
[ 47%] Building C object CMakeFiles/turbojpeg-static.dir/jfdctfst.c.obj
jfdctfst.c
[ 47%] Building C object CMakeFiles/turbojpeg-static.dir/jfdctint.c.obj
jfdctint.c
[ 48%] Building C object CMakeFiles/turbojpeg-static.dir/jidctflt.c.obj
jidctflt.c
[ 48%] Building C object CMakeFiles/turbojpeg-static.dir/jidctfst.c.obj
jidctfst.c
[ 49%] Building C object CMakeFiles/turbojpeg-static.dir/jidctint.c.obj
jidctint.c
[ 49%] Building C object CMakeFiles/turbojpeg-static.dir/jidctred.c.obj
jidctred.c
[ 49%] Building C object CMakeFiles/turbojpeg-static.dir/jquant1.c.obj
jquant1.c
[ 50%] Building C object CMakeFiles/turbojpeg-static.dir/jquant2.c.obj
jquant2.c
[ 50%] Building C object CMakeFiles/turbojpeg-static.dir/jutils.c.obj
jutils.c
[ 51%] Building C object CMakeFiles/turbojpeg-static.dir/jmemmgr.c.obj
jmemmgr.c
[ 51%] Building C object CMakeFiles/turbojpeg-static.dir/jmemnobs.c.obj
jmemnobs.c
[ 51%] Building C object CMakeFiles/turbojpeg-static.dir/jaricom.c.obj
jaricom.c
[ 52%] Building C object CMakeFiles/turbojpeg-static.dir/jcarith.c.obj
jcarith.c
[ 52%] Building C object CMakeFiles/turbojpeg-static.dir/jdarith.c.obj
jdarith.c
[ 53%] Building C object CMakeFiles/turbojpeg-static.dir/simd/jsimd_x86_64.c.obj
jsimd_x86_64.c
[ 53%] Building C object CMakeFiles/turbojpeg-static.dir/turbojpeg.c.obj
turbojpeg.c
[ 53%] Building C object CMakeFiles/turbojpeg-static.dir/transupp.c.obj
transupp.c
[ 54%] Building C object CMakeFiles/turbojpeg-static.dir/jdatadst-tj.c.obj
jdatadst-tj.c
[ 54%] Building C object CMakeFiles/turbojpeg-static.dir/jdatasrc-tj.c.obj
jdatasrc-tj.c
[ 55%] Linking C static library turbojpeg-static.lib
[ 55%] Built target turbojpeg-static
Scanning dependencies of target tjunittest-static
[ 56%] Building C object CMakeFiles/tjunittest-static.dir/tjunittest.c.obj
tjunittest.c
[ 56%] Building C object CMakeFiles/tjunittest-static.dir/tjutil.c.obj
tjutil.c
[ 57%] Linking C executable tjunittest-static.exe
[ 57%] Built target tjunittest-static
Scanning dependencies of target tjbench-static
[ 57%] Building C object CMakeFiles/tjbench-static.dir/tjbench.c.obj
tjbench.c
[ 58%] Building C object CMakeFiles/tjbench-static.dir/bmp.c.obj
bmp.c
[ 58%] Building C object CMakeFiles/tjbench-static.dir/tjutil.c.obj
tjutil.c
[ 59%] Building C object CMakeFiles/tjbench-static.dir/rdbmp.c.obj
rdbmp.c
[ 59%] Building C object CMakeFiles/tjbench-static.dir/rdppm.c.obj
rdppm.c
C:\Users\sudheesh\Desktop\node-jpeg-turbo\deps\libjpeg-turbo\rdppm.c(120): warning C4018: '>': signed/unsigned mismatch
[ 59%] Building C object CMakeFiles/tjbench-static.dir/wrbmp.c.obj
wrbmp.c
[ 60%] Building C object CMakeFiles/tjbench-static.dir/wrppm.c.obj
wrppm.c
[ 60%] Linking C executable tjbench-static.exe
[ 60%] Built target tjbench-static
Scanning dependencies of target cjpeg-static
[ 60%] Building C object CMakeFiles/cjpeg-static.dir/cjpeg.c.obj
cjpeg.c
[ 61%] Building C object CMakeFiles/cjpeg-static.dir/cdjpeg.c.obj
cdjpeg.c
[ 61%] Building C object CMakeFiles/cjpeg-static.dir/rdgif.c.obj
rdgif.c
[ 61%] Building C object CMakeFiles/cjpeg-static.dir/rdppm.c.obj
rdppm.c
C:\Users\sudheesh\Desktop\node-jpeg-turbo\deps\libjpeg-turbo\rdppm.c(120): warning C4018: '>': signed/unsigned mismatch
[ 62%] Building C object CMakeFiles/cjpeg-static.dir/rdswitch.c.obj
rdswitch.c
[ 62%] Building C object CMakeFiles/cjpeg-static.dir/rdbmp.c.obj
rdbmp.c
[ 63%] Building C object CMakeFiles/cjpeg-static.dir/rdtarga.c.obj
rdtarga.c
[ 63%] Linking C executable cjpeg-static.exe
[ 63%] Built target cjpeg-static
Scanning dependencies of target djpeg-static
[ 63%] Building C object CMakeFiles/djpeg-static.dir/djpeg.c.obj
djpeg.c
[ 63%] Building C object CMakeFiles/djpeg-static.dir/cdjpeg.c.obj
cdjpeg.c
[ 64%] Building C object CMakeFiles/djpeg-static.dir/rdcolmap.c.obj
rdcolmap.c
[ 64%] Building C object CMakeFiles/djpeg-static.dir/rdswitch.c.obj
rdswitch.c
[ 65%] Building C object CMakeFiles/djpeg-static.dir/wrgif.c.obj
wrgif.c
[ 65%] Building C object CMakeFiles/djpeg-static.dir/wrppm.c.obj
wrppm.c
[ 65%] Building C object CMakeFiles/djpeg-static.dir/wrbmp.c.obj
wrbmp.c
[ 66%] Building C object CMakeFiles/djpeg-static.dir/wrtarga.c.obj
wrtarga.c
[ 66%] Linking C executable djpeg-static.exe
[ 66%] Built target djpeg-static
Scanning dependencies of target jpegtran-static
[ 66%] Building C object CMakeFiles/jpegtran-static.dir/jpegtran.c.obj
jpegtran.c
[ 67%] Building C object CMakeFiles/jpegtran-static.dir/cdjpeg.c.obj
cdjpeg.c
[ 67%] Building C object CMakeFiles/jpegtran-static.dir/rdswitch.c.obj
rdswitch.c
[ 68%] Building C object CMakeFiles/jpegtran-static.dir/transupp.c.obj
transupp.c
[ 68%] Linking C executable jpegtran-static.exe
[ 68%] Built target jpegtran-static
Scanning dependencies of target rdjpgcom
[ 68%] Building C object CMakeFiles/rdjpgcom.dir/rdjpgcom.c.obj
rdjpgcom.c
[ 69%] Linking C executable rdjpgcom.exe
[ 69%] Built target rdjpgcom
Scanning dependencies of target wrjpgcom
[ 69%] Building C object CMakeFiles/wrjpgcom.dir/wrjpgcom.c.obj
wrjpgcom.c
[ 70%] Linking C executable wrjpgcom.exe
[ 70%] Built target wrjpgcom
Scanning dependencies of target jpeg
[ 70%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcapimin.c.obj
jcapimin.c
[ 71%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcapistd.c.obj
jcapistd.c
[ 71%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jccoefct.c.obj
jccoefct.c
[ 72%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jccolor.c.obj
jccolor.c
[ 72%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcdctmgr.c.obj
jcdctmgr.c
C:\Users\sudheesh\Desktop\node-jpeg-turbo\deps\libjpeg-turbo\jcdctmgr.c(187): warning C4146: unary minus operator applied to unsigned type, result still unsigned
C:\Users\sudheesh\Desktop\node-jpeg-turbo\deps\libjpeg-turbo\jcdctmgr.c(187): warning C4307: '*': integral constant overflow
[ 72%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jchuff.c.obj
jchuff.c
[ 73%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcinit.c.obj
jcinit.c
[ 73%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcmainct.c.obj
jcmainct.c
[ 74%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcmarker.c.obj
jcmarker.c
[ 74%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcmaster.c.obj
jcmaster.c
[ 74%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcomapi.c.obj
jcomapi.c
[ 75%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcparam.c.obj
jcparam.c
[ 75%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcphuff.c.obj
jcphuff.c
[ 76%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcprepct.c.obj
jcprepct.c
[ 76%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcsample.c.obj
jcsample.c
[ 76%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jctrans.c.obj
jctrans.c
[ 77%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdapimin.c.obj
jdapimin.c
[ 77%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdapistd.c.obj
jdapistd.c
[ 78%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdatadst.c.obj
jdatadst.c
[ 78%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdatasrc.c.obj
jdatasrc.c
[ 78%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdcoefct.c.obj
jdcoefct.c
[ 79%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdcolor.c.obj
jdcolor.c
[ 79%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jddctmgr.c.obj
jddctmgr.c
[ 80%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdhuff.c.obj
jdhuff.c
[ 80%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdinput.c.obj
jdinput.c
[ 80%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdmainct.c.obj
jdmainct.c
[ 81%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdmarker.c.obj
jdmarker.c
[ 81%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdmaster.c.obj
jdmaster.c
[ 82%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdmerge.c.obj
jdmerge.c
[ 82%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdphuff.c.obj
jdphuff.c
[ 82%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdpostct.c.obj
jdpostct.c
[ 83%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdsample.c.obj
jdsample.c
[ 83%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdtrans.c.obj
jdtrans.c
[ 84%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jerror.c.obj
jerror.c
[ 84%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jfdctflt.c.obj
jfdctflt.c
[ 84%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jfdctfst.c.obj
jfdctfst.c
[ 85%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jfdctint.c.obj
jfdctint.c
[ 85%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jidctflt.c.obj
jidctflt.c
[ 86%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jidctfst.c.obj
jidctfst.c
[ 86%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jidctint.c.obj
jidctint.c
[ 86%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jidctred.c.obj
jidctred.c
[ 87%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jquant1.c.obj
jquant1.c
[ 87%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jquant2.c.obj
jquant2.c
[ 88%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jutils.c.obj
jutils.c
[ 88%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jmemmgr.c.obj
jmemmgr.c
[ 88%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jmemnobs.c.obj
jmemnobs.c
[ 89%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jaricom.c.obj
jaricom.c
[ 89%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jcarith.c.obj
jcarith.c
[ 90%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/jdarith.c.obj
jdarith.c
[ 90%] Building C object sharedlib/CMakeFiles/jpeg.dir/__/simd/jsimd_x86_64.c.obj
jsimd_x86_64.c
[ 90%] Linking C shared library jpeg62.dll
   Creating library jpeg.lib and object jpeg.exp
[ 90%] Built target jpeg
Scanning dependencies of target cjpeg
[ 90%] Building C object sharedlib/CMakeFiles/cjpeg.dir/__/cjpeg.c.obj
cjpeg.c
[ 90%] Building C object sharedlib/CMakeFiles/cjpeg.dir/__/cdjpeg.c.obj
cdjpeg.c
[ 91%] Building C object sharedlib/CMakeFiles/cjpeg.dir/__/rdgif.c.obj
rdgif.c
[ 91%] Building C object sharedlib/CMakeFiles/cjpeg.dir/__/rdppm.c.obj
rdppm.c
C:\Users\sudheesh\Desktop\node-jpeg-turbo\deps\libjpeg-turbo\rdppm.c(120): warning C4018: '>': signed/unsigned mismatch
[ 92%] Building C object sharedlib/CMakeFiles/cjpeg.dir/__/rdswitch.c.obj
rdswitch.c
[ 92%] Building C object sharedlib/CMakeFiles/cjpeg.dir/__/rdbmp.c.obj
rdbmp.c
[ 92%] Building C object sharedlib/CMakeFiles/cjpeg.dir/__/rdtarga.c.obj
rdtarga.c
[ 93%] Linking C executable cjpeg.exe
[ 93%] Built target cjpeg
Scanning dependencies of target djpeg
[ 93%] Building C object sharedlib/CMakeFiles/djpeg.dir/__/djpeg.c.obj
djpeg.c
[ 94%] Building C object sharedlib/CMakeFiles/djpeg.dir/__/cdjpeg.c.obj
cdjpeg.c
[ 94%] Building C object sharedlib/CMakeFiles/djpeg.dir/__/rdcolmap.c.obj
rdcolmap.c
[ 95%] Building C object sharedlib/CMakeFiles/djpeg.dir/__/rdswitch.c.obj
rdswitch.c
[ 95%] Building C object sharedlib/CMakeFiles/djpeg.dir/__/wrgif.c.obj
wrgif.c
[ 95%] Building C object sharedlib/CMakeFiles/djpeg.dir/__/wrppm.c.obj
wrppm.c
[ 96%] Building C object sharedlib/CMakeFiles/djpeg.dir/__/wrbmp.c.obj
wrbmp.c
[ 96%] Building C object sharedlib/CMakeFiles/djpeg.dir/__/wrtarga.c.obj
wrtarga.c
[ 97%] Linking C executable djpeg.exe
[ 97%] Built target djpeg
Scanning dependencies of target jpegtran
[ 97%] Building C object sharedlib/CMakeFiles/jpegtran.dir/__/jpegtran.c.obj
jpegtran.c
[ 98%] Building C object sharedlib/CMakeFiles/jpegtran.dir/__/cdjpeg.c.obj
cdjpeg.c
[ 98%] Building C object sharedlib/CMakeFiles/jpegtran.dir/__/rdswitch.c.obj
rdswitch.c
[ 99%] Building C object sharedlib/CMakeFiles/jpegtran.dir/__/transupp.c.obj
transupp.c
[ 99%] Linking C executable jpegtran.exe
[ 99%] Built target jpegtran
Scanning dependencies of target jcstest
[100%] Building C object sharedlib/CMakeFiles/jcstest.dir/__/jcstest.c.obj
jcstest.c
[100%] Linking C executable jcstest.exe
[100%] Built target jcstest
  1. Now run npm install in the root directory of node-jpeg-turbo to install relevant node_modules
  2. Now run node-gyp configure which results in
gyp info it worked if it ends with ok
gyp info using node-gyp@4.0.0
gyp info using node@12.4.0 | win32 | x64
gyp info spawn C:\Users\sudheesh\.windows-build-tools\python27\python.EXE
gyp info spawn args [
gyp info spawn args   'C:\\Users\\sudheesh\\AppData\\Roaming\\nvm\\v12.4.0\\node_modules\\node-gyp\\gyp\\gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'msvs',
gyp info spawn args   '-G',
gyp info spawn args   'msvs_version=2015',
gyp info spawn args   '-I',
gyp info spawn args   'c:\\Users\\sudheesh\\Desktop\\\node-jpeg-turbo\\build\\config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\sudheesh\\AppData\\Roaming\\nvm\\v12.4.0\\node_modules\\node-gyp\\addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\sudheesh\\.node-gyp\\12.4.0\\include\\node\\common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=C:\\Users\\sudheesh\\.node-gyp\\12.4.0',
gyp info spawn args   '-Dnode_gyp_dir=C:\\Users\\sudheesh\\AppData\\Roaming\\nvm\\v12.4.0\\node_modules\\node-gyp',
gyp info spawn args   '-Dnode_lib_file=C:\\Users\\sudheesh\\.node-gyp\\12.4.0\\<(target_arch)\\node.lib',
gyp info spawn args   '-Dmodule_root_dir=c:\\Users\\sudheesh\\Desktop\\\node-jpeg-turbo',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'c:\\Users\\sudheesh\\Desktop\\\node-jpeg-turbo\\build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]
gyp info ok
  1. Run node-gyp build to complete the build.
gyp info it worked if it ends with ok
gyp info using node-gyp@4.0.0
gyp info using node@12.4.0 | win32 | x64
gyp info spawn msbuild
gyp info spawn args [
gyp info spawn args   'build/binding.sln',
gyp info spawn args   '/clp:Verbosity=minimal',
gyp info spawn args   '/nologo',
gyp info spawn args   '/p:Configuration=Release;Platform=x64'
gyp info spawn args ]
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jccolor-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jcgray-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jcsample-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jdcolor-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jdmerge-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jdsample-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jfdctflt-sse-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jfdctfst-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jfdctint-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jidctflt-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jidctfst-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jidctint-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jidctred-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jquantf-sse2-64.obj"
  Building "c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\obj/global_intermediate/jquanti-sse2-64.obj"
  jcapimin.c
  jcapistd.c
  jccoefct.c
  jccolor.c
  jcdctmgr.c
  jchuff.c
  jcinit.c
  jcmainct.c
  jcmarker.c
  jcmaster.c
  jcomapi.c
  jcparam.c
  jcphuff.c
  jcprepct.c
  jcsample.c
  jctrans.c
  jdapimin.c
  jdapistd.c
  jdatadst.c
  jdatasrc.c
  jdcoefct.c
  jdcolor.c
  jddctmgr.c
  jdhuff.c
  jdinput.c
  jdmainct.c
  jdmarker.c
  jdmaster.c
  jdmerge.c
  jdphuff.c
  jdpostct.c
  jdsample.c
  jdtrans.c
  jerror.c
  jfdctflt.c
  jfdctfst.c
  jfdctint.c
  jidctflt.c
  jidctfst.c
  jidctint.c
  jidctred.c
  jquant1.c
  jquant2.c
  jutils.c
  jmemmgr.c
  jmemnobs.c
  jaricom.c
  jcarith.c
  jdarith.c
  turbojpeg.c
  transupp.c
  jdatadst-tj.c
  jdatasrc-tj.c
  jsimd_x86_64.c
  win_delay_load_hook.cc
  jpeg-turbo.vcxproj -> c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\\libjpeg-turbo.lib
  buffersize.cc
  compress.cc
c:\users\sudheesh\desktop\node-jpeg-turbo\src\buffersize.cc(39): warning C4996: 'v8::Object::Get': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3412): note: see declaration of 'v8::Object::Get'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\buffersize.cc(59): warning C4996: 'v8::Object::Get': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3412): note: see declaration of 'v8::Object::Get'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\buffersize.cc(69): warning C4996: 'v8::Object::Get': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3412): note: see declaration of 'v8::Object::Get'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\buffersize.cc(87): warning C4996: 'Nan::Callback::Call': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\desktop\node-jpeg-turbo\node_modules\nan\nan.h(1740): note: see declaration of 'Nan::Callback::Call'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\buffersize.cc(94): warning C4533: initialization of 'context' is skipped by 'goto bailout' [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\desktop\node-jpeg-turbo\src\buffersize.cc(38): note: see declaration of 'context'
  c:\users\sudheesh\desktop\node-jpeg-turbo\src\buffersize.cc(94): note: see declaration of 'bailout'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\buffersize.cc(103): warning C4996: 'Nan::Callback::Call': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\desktop\node-jpeg-turbo\node_modules\nan\nan.h(1740): note: see declaration of 'Nan::Callback::Call'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\compress.cc(145): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\compress.cc(146): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\compress.cc(153): warning C4996: 'Nan::Callback::Call': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\desktop\node-jpeg-turbo\node_modules\nan\nan.h(1740): note: see declaration of 'Nan::Callback::Call'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\compress.cc(237): warning C4996: 'v8::Object::Get': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3412): note: see declaration of 'v8::Object::Get'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\compress.cc(247): warning C4996: 'v8::Object::Get': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3412): note: see declaration of 'v8::Object::Get'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\compress.cc(256): warning C4996: 'v8::Object::Get': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3412): note: see declaration of 'v8::Object::Get'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\compress.cc(266): warning C4996: 'v8::Object::Get': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3412): note: see declaration of 'v8::Object::Get'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\compress.cc(276): warning C4996: 'v8::Object::Get': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3412): note: see declaration of 'v8::Object::Get'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\compress.cc(288): warning C4996: 'v8::Object::Get': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3412): note: see declaration of 'v8::Object::Get'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\compress.cc(323): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\compress.cc(324): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\compress.cc(339): warning C4996: 'Nan::Callback::Call': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\desktop\node-jpeg-turbo\node_modules\nan\nan.h(1740): note: see declaration of 'Nan::Callback::Call'
  decompress.cc
  exports.cc
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(129): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(130): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(131): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(132): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(133): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(140): warning C4996: 'Nan::Callback::Call': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\desktop\node-jpeg-turbo\node_modules\nan\nan.h(1740): note: see declaration of 'Nan::Callback::Call'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(215): warning C4996: 'v8::Object::Get': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3412): note: see declaration of 'v8::Object::Get'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(251): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(252): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(253): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(254): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(255): warning C4996: 'v8::Object::Set': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\.node-gyp\12.4.0\include\node\v8.h(3358): note: see declaration of 'v8::Object::Set'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(262): warning C4533: initialization of 'context' is skipped by 'goto bailout' [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(212): note: see declaration of 'context'
  c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(262): note: see declaration of 'bailout'
c:\users\sudheesh\desktop\node-jpeg-turbo\src\decompress.cc(271): warning C4996: 'Nan::Callback::Call': was declared deprecated [c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\jpegturbo.vcxproj]
  c:\users\sudheesh\desktop\node-jpeg-turbo\node_modules\nan\nan.h(1740): note: see declaration of 'Nan::Callback::Call'
  win_delay_load_hook.cc
     Creating library c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\jpegturbo.lib and object c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\jpegturbo.exp
  jpegturbo.vcxproj -> c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\\jpegturbo.node
gyp info ok
  1. Now run npm install which
> jpeg-turbo@0.4.0 install c:\Users\sudheesh\Desktop\node-jpeg-turbo
> node ./prebuilt-bindings install

[prebuilt-bindings] => Testing 'c:\Users\sudheesh\Desktop\node-jpeg-turbo\build\Release\jpegturbo.node'...
[prebuilt-bindings] => Prebuilt bindings installed!
npm notice created a lockfile as package-lock.json. You should commit this file.
audited 4 packages in 0.375s
found 0 vulnerabilities
  1. Successful. You can now run a test file for example:
var jpg = require('bindings')('jpegturbo.node');
var fs = require('fs');

var raw = fs.readFileSync('./test_image.jpg');

var options = {
    format: jpg.FORMAT_RGBA,
    width: 300,
    height: 300,
    subsampling: jpg.SAMP_444,
}

var out ;

console.log(jpg);
console.log(raw);
console.log(options);

var encoded = jpg.compressSync(raw, options);
console.log(encoded);

fs.writeFileSync('compressed_test_image.jpg', encoded.data);

var encoded = fs.readFileSync('compressed_test_image.jpg');

var options = {
    format: jpg.FORMAT_RGBA,
}

var decoded = jpg.decompressSync(encoded, options);
console.log(decoded);

We are using the bounty winner @Julusian's fix, Pull request #13 which works flawlessly with AppVeyour build server, when his node-jpeg-turbo is a dependency of our project.

Sure , no problem. In case someone stumbles over this post later for a node version >= 12. Please apply the following patch.

diff --git a/src/buffersize.cc b/src/buffersize.cc
index 7e0f700..3fa1fcd 100644
--- a/src/buffersize.cc
+++ b/src/buffersize.cc
@@ -35,12 +35,13 @@ NAN_METHOD(BufferSize) {
   }
 
   // Subsampling
+  auto context = v8::Isolate::GetCurrent()->GetCurrentContext();
   sampObject = options->Get(New("subsampling").ToLocalChecked());
   if (!sampObject->IsUndefined()) {
     if (!sampObject->IsUint32()) {
       _throw("Invalid subsampling method");
     }
-    jpegSubsamp = sampObject->Uint32Value();
+    jpegSubsamp = sampObject->Uint32Value(context).ToChecked();
   }
 
   switch (jpegSubsamp) {
@@ -62,7 +63,7 @@ NAN_METHOD(BufferSize) {
   if (!widthObject->IsUint32()) {
     _throw("Invalid width value");
   }
-  width = widthObject->Uint32Value();
+  width = widthObject->Uint32Value(context).ToChecked();
 
   // Height
   heightObject = options->Get(New("height").ToLocalChecked());
@@ -72,7 +73,7 @@ NAN_METHOD(BufferSize) {
   if (!heightObject->IsUint32()) {
     _throw("Invalid height value");
   }
-  height = heightObject->Uint32Value();
+  height = heightObject->Uint32Value(context).ToChecked();
 
   // Finally, calculate the buffer size
   dstLength = tjBufSize(width, height, jpegSubsamp);
diff --git a/src/compress.cc b/src/compress.cc
index b30ae6c..d910d91 100644
--- a/src/compress.cc
+++ b/src/compress.cc
@@ -191,6 +191,8 @@ void compressParse(const Nan::FunctionCallbackInfo<Value>& info, bool async) {
   Local<Value> qualityObject;
   int quality = NJT_DEFAULT_QUALITY;
 
+  auto context = v8::Isolate::GetCurrent()->GetCurrentContext();
+
   // Output
   unsigned long jpegSize = 0;
 
@@ -239,7 +241,7 @@ void compressParse(const Nan::FunctionCallbackInfo<Value>& info, bool async) {
   if (!formatObject->IsUint32()) {
     _throw("Invalid input format");
   }
-  format = formatObject->Uint32Value();
+  format = formatObject->Uint32Value(context).ToChecked();
 
   // Subsampling
   sampObject = options->Get(New("subsampling").ToLocalChecked());
@@ -247,7 +249,7 @@ void compressParse(const Nan::FunctionCallbackInfo<Value>& info, bool async) {
     if (!sampObject->IsUint32()) {
       _throw("Invalid subsampling method");
     }
-    jpegSubsamp = sampObject->Uint32Value();
+    jpegSubsamp = sampObject->Uint32Value(context).ToChecked();
   }
 
   // Width
@@ -258,7 +260,7 @@ void compressParse(const Nan::FunctionCallbackInfo<Value>& info, bool async) {
   if (!widthObject->IsUint32()) {
     _throw("Invalid width value");
   }
-  width = widthObject->Uint32Value();
+  width = widthObject->Uint32Value(context).ToChecked();
 
   // Height
   heightObject = options->Get(New("height").ToLocalChecked());
@@ -268,7 +270,7 @@ void compressParse(const Nan::FunctionCallbackInfo<Value>& info, bool async) {
   if (!heightObject->IsUint32()) {
     _throw("Invalid height value");
   }
-  height = heightObject->Uint32Value();
+  height = heightObject->Uint32Value(context).ToChecked();
 
   // Stride
   strideObject = options->Get(New("stride").ToLocalChecked());
@@ -276,7 +278,7 @@ void compressParse(const Nan::FunctionCallbackInfo<Value>& info, bool async) {
     if (!strideObject->IsUint32()) {
       _throw("Invalid stride value");
     }
-    stride = strideObject->Uint32Value();
+    stride = strideObject->Uint32Value(context).ToChecked();
   }
   else {
     stride = width;
@@ -285,10 +287,10 @@ void compressParse(const Nan::FunctionCallbackInfo<Value>& info, bool async) {
   // Quality
   qualityObject = options->Get(New("quality").ToLocalChecked());
   if (!qualityObject->IsUndefined()) {
-    if (!qualityObject->IsUint32() || qualityObject->Uint32Value() > 100) {
+    if (!qualityObject->IsUint32() || qualityObject->Uint32Value(context).ToChecked() > 100) {
       _throw("Invalid quality value");
     }
-    quality = qualityObject->Uint32Value();
+    quality = qualityObject->Uint32Value(context).ToChecked();
   }
 
   // Do either async or sync compress
diff --git a/src/decompress.cc b/src/decompress.cc
index 72cea63..0900398 100644
--- a/src/decompress.cc
+++ b/src/decompress.cc
@@ -209,6 +209,7 @@ void decompressParse(const Nan::FunctionCallbackInfo<Value>& info, bool async) {
   }
 
   // Options are optional
+  auto context = v8::Isolate::GetCurrent()->GetCurrentContext();
   if (options->IsObject()) {
     // Format of output buffer
     formatObject = options->Get(New("format").ToLocalChecked());
@@ -216,7 +217,7 @@ void decompressParse(const Nan::FunctionCallbackInfo<Value>& info, bool async) {
       if (!formatObject->IsUint32()) {
         _throw("Invalid format");
       }
-      format = formatObject->Uint32Value();
+      format = formatObject->Uint32Value(context).ToChecked();
     }
   }
 

My main problem with the bounty winning changes is that they’re so extensive it’s hard to review. However, if you let me know that it works for you and whether usage remains unchanged, I would be happy to merge the changes.

I had no idea this module was used so much.