You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Render部署Node.js应用时msnodesqlv8包编译错误的解决方法

部署Render云服务时msnodesqlv8编译失败:sqltypes.h不存在

核心错误

构建阶段触发以下关键错误:

  • error /opt/render/project/src/node_modules/msnodesqlv8: Command failed.
  • 衍生致命错误:../src/stdafx.h:37:14: fatal error: sqltypes.h: No such file or directory

完整构建日志

=> Downloading cache...
==> Transferred 73MB in 7s. Extraction took 2s.
==> Using Node version 20.11.1 (default)
==> Docs on specifying a Node version: https://render.com/docs/node-version
==> Running build command 'yarn'...
yarn install v1.22.22
warning package.json: No license field
info No lockfile found.
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
warning No license field
[1/4] Resolving packages...
warning mssql-session-store > mssql > tedious > sprintf@0.1.5: The sprintf package is deprecated in favor of sprintf-js.
warning mssql-session-store > mssql > tedious > babel-runtime > core-js@1.2.7: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
error /opt/render/project/src/node_modules/msnodesqlv8: Command failed.
Exit code: 1
Command: prebuild-install || node-gyp rebuild
Arguments: 
Directory: /opt/render/project/src/node_modules/msnodesqlv8
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Output:
make: Entering directory '/opt/render/project/src/node_modules/msnodesqlv8/build'
  ACTION binding_gyp_sqlserverv8_target_print_variables src/BeginTranOperation.cpp
cflags_cpp -std=c++17 | arch: x86_64 | link_path: -L/usr/local/lib -L/usr/lib -L. | msodbc_include_folders  | fileset src/BeginTranOperation.cpp src/BinaryColumn.cpp src/BoundDatum.cpp src/BoundDatumSet.cpp src/CancelOperation.cpp src/CloseOperation.cpp src/CollectOperation.cpp src/Column.cpp src/Connection.cpp src/ConnectionHandles.cpp src/EndTranOperation.cpp src/FreeStatementOperation.cpp src/MutateJS.cpp src/OdbcConnection.cpp src/OdbcConnectionBridge.cpp src/OdbcError.cpp src/OdbcHandle.cpp src/OdbcOperation.cpp src/OdbcStatement.cpp src/OdbcStatementCache.cpp src/OpenOperation.cpp src/Operation.cpp src/OperationManager.cpp src/PollingModeOperation.cpp src/PrepareOperation.cpp src/ProcedureOperation.cpp src/QueryOperation.cpp src/QueryOperationParams.cpp src/QueryPreparedOperation.cpp src/ReadColumnOperation.cpp src/ReadNextResultOperation.cpp src/ResultSet.cpp src/TimestampColumn.cpp src/UnbindOperation.cpp src/Utility.cpp src/addon.cpp src/bcp.cpp src/stdafx.cpp
  CXX(target) Release/obj.target/sqlserverv8/src/BeginTranOperation.o
In file included from ../src/OdbcConnection.h:22,
                 from ../src/BeginTranOperation.cpp:1:
../src/stdafx.h:37:14: fatal error: sqltypes.h: No such file or directory
     #include <sqltypes.h>
              ^~~~~~~~~~~~
compilation terminated.
make: *** [sqlserverv8.target.mk:174: Release/obj.target/sqlserverv8/src/BeginTranOperation.o] Error 1
make: Leaving directory '/opt/render/project/src/node_modules/msnodesqlv8/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.<anonymous> (/opt/render/project/nodes/node-20.11.1/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:209:23)
gyp ERR! System Linux 5.15.0-1055-aws
gyp ERR! command "/opt/render/project/nodes/node-20.11.1/bin/node" "/opt/render/project/nodes/node-20.11.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /opt/render/project/src/node_modules/msnodesqlv8
gyp ERR! node -v v20.11.1
gyp ERR! node-gyp -v v10.0.1
gyp ERR! not ok
==> Build failed 😞

环境与依赖

  • Node版本:v20.11.1
  • package.json依赖:
{
  "dependencies": {
    "body-parser": "^1.20.2",
    "connect-flash": "^0.1.1",
    "cors": "^2.8.5",
    "dotenv": "^16.4.5",
    "ejs": "^3.1.9",
    "express": "^4.18.3",
    "express-session": "^1.18.0",
    "morgan": "^1.10.0",
    "msnodesqlv8": "^4.1.2",
    "mssql": "^10.0.2",
    "mssql-session-store": "^1.0.0",
    "mysql2": "^3.9.2",
    "nodemon": "^3.1.0"
  }
}

问题定位

通过注释代码调试,确认问题由以下代码触发:

const mysql = require('mssql/msnodesqlv8');

本地环境中node_modules内的msnodesqlv8包及sqltypes.h文件均存在,但部署到Render时编译失败,求解决方法。


内容的提问来源于stack exchange,提问作者Assassin Grim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 23:04:58