最近,我开始探索“咕噜”,并尝试了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和供应商文件提供服务,因此速递用于开发的配置如下:
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')));当我将它移到生产(特别是openshift)时,index.html模板与所有脚本和链接标记一起使用,但是没有找到脚本和css。例如,我得到的是“无法获得file.css”。
我在云上运行grunt构建和编译,输出“完成,没有错误”,但是文件找不到。我已经尝试了太多的东西,我已经没有任何想法了。我是不是漏掉了一些关于咕噜的基本内容?
编辑:问题是执行路由的javascript文件位于src/server中,因此__dirname指向该位置。然而,Grunt在项目根目录中进行了复制。
app.use(express.static(path.join(__dirname, '../../dist/public')));这个解决了问题。
发布于 2015-05-07 13:17:18
你需要用一条路线来暴露你的资产。
app.use(express.static(path.join(__dirname, 'dist/public')));
在运行npm之后,您需要修改package.json文件以调用grunt。若要执行此操作,请添加以下内容。
"scripts": {
"start": "node ./src/server/app.js",
"postintall": "grunt build; grunt compile"
}此外,定义一个将这两个任务结合在一起的新任务可能更好。
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文件中。
https://stackoverflow.com/questions/30101525
复制相似问题