我在Sails中很陌生。
我已经从Sails模板创建了一个新的网络应用,并尝试将其上传到Heroku。除了资产,其他一切都很好,找不到资产(js,css,图像等)。
我发现Sails使用Grunt将文件复制到.tmp文件夹。我已经检查过并将Grunt添加到我的package.json
文件中。我还用web: node app.js
命令和指向NODE_ENV
的{{1}}变量添加了一个Procfile。
我没有更改任何Grunt任务,默认情况下是production
文件和Gruntfile.js
目录。
关于我还能检查什么的任何想法?
答案 0 :(得分:2)
我以不同的方式解决了这个问题。除了在OP的答案中包含一些grunt
部门外,我还在postinstall
的脚本部分中添加了package.json
:
"scripts": {
"start": "NODE_ENV=production node app.js",
"test": "npm run lint && npm run custom-tests && echo 'Done.'",
"lint": "eslint . --max-warnings=0 --report-unused-disable-directives && echo '✔ Your .js files look so good.' && htmlhint -c ./.htmlhintrc views/*.ejs && htmlhint -c ./.htmlhintrc views/**/*.ejs && htmlhint -c ./.htmlhintrc views/**/**/*.ejs && htmlhint -c ./.htmlhintrc views/**/**/**/*.ejs && htmlhint -c ./.htmlhintrc views/**/**/**/**/*.ejs && htmlhint -c ./.htmlhintrc views/**/**/**/**/**/*.ejs && htmlhint -c ./.htmlhintrc views/**/**/**/**/**/**/*.ejs && echo '✔ So do your .ejs files.' && lesshint assets/styles/ --max-warnings=0 && echo '✔ Your .less files look good, too.'",
"custom-tests": "echo \"(No other custom tests yet.)\" && echo",
"postinstall": "grunt build", // added this
...
此操作对heroku的影响是要求运行grunt任务build
,该任务会编译资产并将其复制到适当引用的位置(即:.tmp
)
答案 1 :(得分:0)
解决方案非常简单。原来,我的package.json
中没有为生产环境添加Grunt依赖项,而仅为开发环境添加了Grunt依赖项。我已经添加了它们,并且运行良好。
"dependencies": {
"@sailshq/connect-redis": "^3.2.1",
"@sailshq/lodash": "^3.10.3",
"@sailshq/socket.io-redis": "^5.2.0",
"async": "2.0.1",
"sails": "^1.0.2",
"sails-hook-apianalytics": "^2.0.0",
"sails-hook-organics": "^0.13.0",
"sails-hook-orm": "^2.0.0-16",
"sails-hook-sockets": "^1.4.0",
"sails-postgresql": "^1.0.1",
"grunt": "1.0.1", // I've added these two lines
"sails-hook-grunt": "^3.0.2" // I've added these two lines
},
"devDependencies": {
"@sailshq/eslint": "^4.19.3",
"@sailshq/htmlhint": "^0.9.16",
"@sailshq/lesshint": "^4.6.6",
"grunt": "1.0.1",
"sails-hook-grunt": "^3.0.2"
},