我有一个使用express-hbs运行的Node.JS + express应用程序。在本地运行时一切正常,但在部署到Heroku时失败。
我尝试了一些明显的故障排除步骤,例如:
var port = process.env.PORT || 80;
但是问题仍然存在。
这是完整的错误:
/app/node_modules/express-hbs/lib/hbs.js:90
var matches = str.match(layoutPattern);
TypeError: Cannot read property 'match' of undefined
at ExpressHbs.declaredLayoutFile (/app/node_modules/express-hbs/lib/hbs.js:90:21)
at parseLayout (/app/node_modules/express-hbs/lib/hbs.js:476:27)
at /app/node_modules/express-hbs/lib/hbs.js:598:7
at getSourceTemplate (/app/node_modules/express-hbs/lib/hbs.js:572:16)
at compileFile (/app/node_modules/express-hbs/lib/hbs.js:594:5)
at /app/node_modules/express-hbs/lib/hbs.js:647:16
at ReaddirpReadable.<anonymous> (/app/node_modules/express-hbs/lib/hbs.js:196:17)
at emitNone (events.js:106:13)
at ReaddirpReadable.emit (events.js:208:7)
at endReadableNT (/app/node_modules/readable-stream/lib/_stream_readable.js:1010:12)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
我在本地运行Node.js v6.11.4和NPM v3.10.10,它们都包含在package.json中
答案 0 :(得分:0)
这可能是issue,并且您的package-lock.json
文件出现了问题……尤其是,由于错误是由您的express-hbs
节点模块内部产生的,所以:
app / node_modules / express-hbs / lib / hbs.js:90
也许您可以尝试删除本地package-lock.json
文件和node_modules
目录,然后尝试重新安装从属库?
例如,一旦您的package-lock.json
和node_modules
被删除:
rm package-lock.json
rm -rf node_modules
尝试使用以下项目重新安装项目的依赖npm
库:npm install
重新安装这些库后,您将拥有一个全新的package-lock.json
文件,因为该文件是自动生成的,其作用几乎类似于“ 真相”来为他人构建您的项目。现在,尝试将您的代码推送并发布到Heroku
,看看是否可以解决您的问题。
希望有帮助!