Nginx 如何将delpoy Vue项目投入生产?
使用Ubuntu16.04和Nginx,我试图将一个Vue项目部署到生产环境中,但却一直在白墙上运行 我将我的项目克隆到Nginx 如何将delpoy Vue项目投入生产?,nginx,vue.js,deployment,web-deployment,Nginx,Vue.js,Deployment,Web Deployment,使用Ubuntu16.04和Nginx,我试图将一个Vue项目部署到生产环境中,但却一直在白墙上运行 我将我的项目克隆到 /var/www/html/maak-web/maak_web/ 使用npm install安装所有需要的依赖项,并运行以下生成脚本: node build/build.js 这启动了生产构建,该构建成功并部署了项目 在我的nginx默认配置中,我将根目录更改为指向正确的文件夹,如下所示: root /var/www/html/maak-web/maak_web; 当我
/var/www/html/maak-web/maak_web/
使用npm install
安装所有需要的依赖项,并运行以下生成脚本:
node build/build.js
这启动了生产构建
,该构建成功并部署了项目
在我的nginx默认配置中,我将根目录更改为指向正确的文件夹,如下所示:
root /var/www/html/maak-web/maak_web;
当我现在访问我的域/IP时,我看到项目加载(例如favicon和站点名称加载),并且我可以从这里访问我的静态
文件:
Vue项目似乎可以工作,但问题是它实际上不显示任何内容,并且访问子视图,如/oneview
和/anotherview
会抛出404页面未找到错误
由于Vue似乎没有抛出任何错误,我怀疑这是nginx配置问题
解决方案是将产品构建到/dist/文件夹中,并仅发布/dist/文件夹内容。一旦我将内容复制到/www/html/上,它就工作得很好
看到这是一个错误,没有将正确的文件放入输出文件夹,我建议您更新config/index.js
文件,通过为build
对象设置index
和assetroot
来包含正确的生产位置
build: {
// Template for index.html
index: path.resolve(__dirname, '../../srv/www/index.html'),
// Paths
assetsRoot: path.resolve(__dirname, '../../srv/www'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
...
构建脚本是否创建了index.html?ngi x是否配置用于拾取index.hrml文件的站点块?它创建了“dist”文件夹和index.html。你所说的“nginx是否通过拾取index.html来阻止站点?”是什么意思?你是否使用了Vue路由器,然后模式是历史?如果你访问
#/anotherview
而不是/anotherview
,会发生什么?谢谢@Daniel,我似乎完全没有抓住要点。解决方案是将产品构建到/dist/文件夹中,并仅发布/dist/文件夹内容。一旦我将内容复制到/www/html/上,它就工作得很好。