Answers:
您必须使用forever,nodemon或其他类似的观察器...
通过运行以下命令永久安装:
sudo npm install -g forever
运行:
forever -w start app.js
为避免由于Sails写入.tmp
文件夹而导致无限重启,您可以.foreverignore
在项目目录中创建一个文件,并将此内容放入其中:
**/.tmp/**
**/views/**
**/assets/**
请参阅GitHub上的问题: 由于/.tmp而永远重启。
只需正常启动应用程序,然后在添加/更改/删除模型或控制器文件时,将重新加载所有控制器和模型,而无需降低/重新启动应用程序。
Details: Error: ER_ROW_IS_REFERENCED: Cannot delete or update a parent row: a foreign key constraint fail
抛弃5/lib/node_modules/sails/lib/hooks/orm/index.js:221
(使用帆11.3)
例如nodemon
用于监视api和config目录
.nodemonignore
内容
views/*
.tmp/*
.git/*
创建.nodemonignore后运行命令
$> nodemon -w api -w config
主管忽略3个目录的示例
$> supervisor -i .tmp,.git,views app.js
nodemon
解决forever
方案nodemon
。使开发工作流程更容易。
.nodemonignore
示例并运行nodemon
。到目前为止,它仍然有效。
sails lift
,nodemon知道使用app.js
。
如果您使用的是Sails 0.11,则可以安装此钩子以在更改型号或控制器时自动重新加载(视图不需要重新加载):
npm install sails-hook-autoreload
nodemon
全局或本地安装。
npm install nodemon --save
npm install nodemon -g
sails
如下所示在您的项目中本地安装
npm install sails --save
然后改变 package.json
从
"scripts": {
"debug": "node debug app.js",
"start": "node app.js"
},
至
"scripts": {
"debug": "node debug app.js",
"start": "node app.js",
"dev": "export NODE_ENV=development && nodemon --ignore 'tmp/*' app.js && exit 0"
},
然后
npm run dev
我遇到了同样的问题,我已经通过使用发牢骚手表和永久发声解决了sails @ beta任务。结果是4个grunt命令:
更新:任务在当前的Sails版本中可用(不再是beta:>)
这是代码-我使用的是sails @ beta,其中包含一个任务目录,我不知道它是否包含在以前的版本中:
首先,您必须永久安装在sails目录中:
npm install grunt-forever --save-dev
task / config / forever.js配置永久任务。
module.exports = function(grunt) {
grunt.config.set('forever', {
server: {
options: {
index: 'app.js',
logDir: 'logs'
}
}
});
grunt.loadNpmTasks('grunt-forever');
};
task / config / watch.js(编辑)编辑监视任务以添加新规则
// api and assets default rules
,
server: {
// Server files to watch:
files: [
'api/**/*',
'config/**/*'
],
// Restart server
tasks: ['forever:server:restart']
}
task / register / watchForever.js注册您的自定义任务(此文件可以重命名为您想要的任何名称)
module.exports = function(grunt) {
// Starts server
grunt.registerTask('start', [
'compileAssets',
'linkAssetsBuild',
'clean:build',
'copy:build',
'forever:server:start'
]);
// Restarts the server (if necessary) and waits for changes
grunt.registerTask('startWatch', [
'restart',
'watch:server'
]);
// Restarts server
grunt.registerTask('restart', [
'forever:server:restart'
]);
// Stops server
grunt.registerTask('stop', [
'forever:server:stop'
]);
};
有了这个,你应该可以使用
grunt startWatch
并让您的服务器等待更改重新开始:>
希望这对您有所帮助!
对于现在遇到此问题的任何人,似乎都不再需要-启动的应用程序sails lift
将具有运行正常的监视任务,并且无需重新启动即可看到代码更改。
我最初没有意识到这是因为没有任何迹象表明控制台中正在发生的事情,但是它似乎不需要重启就可以工作(我使用的是Sails 0.11)
.foreverignore
因为它们不需要重新启动即可立即查看更改。例如**/views/**