Handlebars部署报错:找不到node:path模块
问题
用Handlebars在Node.js开发的小型表单,本地运行正常,部署到render.com后,执行const exphbs = require('express-handlebars');时报错,错误信息如下:
Error: Cannot find module 'node:path' Mar 15 07:29:59 PM Require stack: Mar 15 07:29:59 PM - /opt/render/project/src/node_modules/express-handlebars/dist/express-handlebars.js Mar 15 07:29:59 PM - /opt/render/project/src/node_modules/express-handlebars/dist/index.js Mar 15 07:29:59 PM - /opt/render/project/src/src/index.js Mar 15 07:29:59 PM at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15) Mar 15 07:29:59 PM at Function.Module._load (internal/modules/cjs/loader.js:730:27) Mar 15 07:29:59 PM at Module.require (internal/modules/cjs/loader.js:957:19) Mar 15 07:29:59 PM at require (internal/modules/cjs/helpers.js:88:18) Mar 15 07:29:59 PM at Object.<anonymous> (/opt/render/project/src/node_modules/express-handlebars/dist/express-handlebars.js:19:14) Mar 15 07:29:59 PM at Module._compile (internal/modules/cjs/loader.js:1068:30) Mar 15 07:29:59 PM at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10) Mar 15 07:29:59 PM at Module.load (internal/modules/cjs/loader.js:933:32) Mar 15 07:29:59 PM at Function.Module._load (internal/modules/cjs/loader.js:774:14) Mar 15 07:29:59 PM at Module.require (internal/modules/cjs/loader.js:957:19) { Mar 15 07:29:59 PM code: 'MODULE_NOT_FOUND', Mar 15 07:29:59 PM requireStack: [ Mar 15 07:29:59 PM '/opt/render/project/src/node_modules/express-handlebars/dist/express-handlebars.js', Mar 15 07:29:59 PM '/opt/render/project/src/node_modules/express-handlebars/dist/index.js', Mar 15 07:29:59 PM '/opt/render/project/src/src/index.js' Mar 15 07:29:59 PM ] Mar 15 07:29:59 PM }
已安装path模块,部署平台为render.com。
解决方案
问题根源
node:path这种带前缀的模块导入语法是Node.js 16.0.0之后才支持的特性,而你在render.com上使用的Node.js版本低于这个要求,所以导致express-handlebars依赖的模块无法被找到。
修复方法
- 指定Node.js版本:在项目根目录新建
.nvmrc文件,写入你本地开发用的Node.js版本号(例如v18.17.0),render.com部署时会自动读取该文件并使用对应版本的Node.js。 - 降级express-handlebars:如果不想升级Node.js,可安装不使用
node:path的旧版本,执行命令:
安装完成后重新部署即可。npm install express-handlebars@6.0.0 --save - 手动配置render环境:登录render.com进入项目设置,在环境变量中添加
NODE_VERSION,值设为你需要的Node.js版本号,保存后重新部署项目。
内容的提问来源于stack exchange,提问作者Jesus Zuniga Amador
相关产品推荐
相关产品推荐

