我最近开始探索咕噜声,我已经通过试用了 https://github.com/ng-vu/ng-express-boilerplate种子。
它使用gruntfile通过以下代码将静态资产,css,javascript复制到目标文件夹:
dist_js: {
files: [{
src: ['<%= app_files.js %>', '<%= vendor_files.js %>'],
dest: '<%= dist_dir %>/public',
cwd: '.',
expand: true
}]
}
其中dist_dir是'dist'。
现在在配置文件中指定在开发中我们要从其原始位置提供资产,src和供应商文件,因此express for development的配置如下:
app.use('/assets', express.static(path.resolve(__dirname, '../assets')));
app.use('/src', express.static(path.resolve(__dirname, '../../src')));
app.use('/vendor', express.static(path.resolve(__dirname, '../../vendor')));
在制作中,代码是:
app.use(express.static(path.join(__dirname, 'public')));
当我将其移至生产(特别是openhift)时,index.html模板将提供所有脚本和链接标记,但找不到脚本和css。我得到的是“不能GET file.css”,例如。
我运行grunt构建并在云上编译,输出是“完成,没有错误”,但文件无处可寻。我尝试了太多的东西,但我的想法已经用完了。我错过了一些关于咕噜声的基本信息吗?
编辑: 问题是执行路由的javascript文件位于src / server内,因此__dirname指向该位置。然而,Grunt在项目根目录中进行了复制。
app.use(express.static(path.join(__dirname, '../../dist/public')));
这解决了问题。
答案 0 :(得分:0)
您需要使用路线公开您的资产。
app.use(express.static(path.join(__dirname, 'dist/public')));
运行npm install后,您需要修改package.json
文件以调用grunt。为此,请添加以下内容。
"scripts": {
"start": "node ./src/server/app.js",
"postintall": "grunt build; grunt compile"
}
此外,定义一个结合了这两个任务的新grunt任务可能会很好。
<强> Gruntfile.js 强>
grunt.registerTask("prep-for-cloud", [ "compile", "build" ]);
然后您的package.json
将如下所示。
"scripts": {
"start": "node ./src/server/app.js",
"postintall": "grunt prep-for-cloud"
}
另外,您应该将grunt-cli
作为依赖项添加到package.json
文件中。