【发布时间】:2015-10-18 15:04:18
【问题描述】:
我正在尝试使用 Sails.js 将我的应用程序投入生产,但无法通过繁重的任务。这是我收到的错误:
error: Error: The hook `grunt` is taking too long to load.
Make sure it is triggering its `initialize()` callback, or else set
`sails.config.grunt._hookTimeout to a higher value (currently 20000)
at tooLong [as _onTimeout]
(/usr/local/lib/node_modules/sails/lib/app/private/loadHooks.js:92:21)
at Timer.listOnTimeout (timers.js:110:15)
我大幅增加了sails.config.grunt._hookTimeout,但该过程仍未完成。在生产或开发输出中运行sails debug:
Grunt :: Error: listen EADDRINUSE
at exports._errnoException (util.js:746:11)
at Agent.Server._listen2 (net.js:1156:14)
at listen (net.js:1182:10)
at Agent.Server.listen (net.js:1267:5)
at Object.start (_debugger_agent.js:20:9)
at startup (node.js:86:9)
at node.js:814:3
我觉得很奇怪,在开发模式下一切正常,但在生产中却不是这样。包含的文件很大,比如angular、moment等模块。这就是jsFilesToInject 的外观:
var jsFilesToInject = [
// Load sails.io before everything else
'js/dependencies/sails.io.js',
'js/dependencies/angular.min.js',
'js/dependencies/moment.min.js',
'js/dependencies/angular-ui-router.min.js',
'js/dependencies/angular-sails.min.js',
'js/dependencies/angular-moment.min.js',
'js/dependencies/angular-animate.min.js',
'js/dependencies/angular-aria.min.js',
'js/dependencies/angular-material.min.js',
// All of the rest of your client-side js files
// will be injected here in no particular order.
'js/**/*.js'
];
我不确定还有什么会导致这种情况,有什么建议吗?我正在使用 Sails 版本 0.11.0
【问题讨论】:
-
您使用什么端口进行生产?如果是 80 端口,看看是否有其他服务已经在使用它(nginx、apache 等)并杀死它们。同样值得尝试以 root 身份提升风帆,以查看它是否是与权限相关的问题。
-
我以 root 身份运行,它在 SSL 端口 443 上运行。虽然它无论如何都不能在 80 上工作。没有安装 apache 或 nginx。
-
尝试自己运行 grunt uglify:dist
-
尝试在 1337 端口运行它,可能你已经在使用默认端口