Node.js 在SSR模式下发布我的nuxtjs网站时出错

Node.js 在SSR模式下发布我的nuxtjs网站时出错,node.js,nginx,nuxt.js,Node.js,Nginx,Nuxt.js,我在尝试发布nuxtjs站点时遇到了一些问题。通常,我使用的是generate命令,但对于这个命令,我需要使用完整的SSR,所以我使用numxt start 但在构建和启动应用程序之后,情况就一团糟了。构建在控制台中进行得非常顺利,应用程序也会启动。问题是,当我尝试访问网站时,它会部分加载,但我在浏览器中遇到了所有这些错误: manifest.3a7efd91c5f63f114507.js Failed to load resource: the server responded with a

我在尝试发布nuxtjs站点时遇到了一些问题。通常,我使用的是generate命令,但对于这个命令,我需要使用完整的SSR,所以我使用numxt start

但在构建和启动应用程序之后,情况就一团糟了。构建在控制台中进行得非常顺利,应用程序也会启动。问题是,当我尝试访问网站时,它会部分加载,但我在浏览器中遇到了所有这些错误:

manifest.3a7efd91c5f63f114507.js
Failed to load resource: the server responded with a status of 404 ()
vendor.7519259bf7bdf608079e.js
Failed to load resource: the server responded with a status of 404 ()
app.a5cb9356f53306f973dc.js
Failed to load resource: the server responded with a status of 404 ()
default.1f3ad14df16ee86595af.js
Failed to load resource: the server responded with a status of 404 ()
index.260dc65b69022a31ad58.js
Failed to load resource: the server responded with a status of 404 ()
/_nuxt/pages/spot/_slug.e57cc2e78d8e0b160fe7.js
Failed to load resource: the server responded with a status of 404 ()
manifest.3a7efd91c5f63f114507.js
Failed to load resource: the server responded with a status of 404 ()
default.1f3ad14df16ee86595af.js
Failed to load resource: the server responded with a status of 404 ()
index.260dc65b69022a31ad58.js
Failed to load resource: the server responded with a status of 404 ()
vendor.7519259bf7bdf608079e.js
Failed to load resource: the server responded with a status of 404 ()
app.a5cb9356f53306f973dc.js
Failed to load resource: the server responded with a status of 404 ()
在构建过程中似乎没有什么问题。当我使用nuxt start时,我得到以下结果:

$ nuxt start
  nuxt:axios BaseURL: http://localhost:3042/api (Browser: /api) +0ms

  OPEN  http://localhost:3042
这是我的服务器配置文件:

# Site global
server {
    listen 443 ssl http2;
    server_name www.mywebsite.com;
    access_log  off;

    location = /robots.txt  { access_log off; log_not_found off; }
    location = /favicon.ico { access_log off; log_not_found off; }
    location / {
        proxy_pass http://127.0.0.1:3042/;
        include /etc/nginx/conf.d/proxy.conf;
        root /var/www/mywebsite/site;
        add_header Access-Control-Allow-Origin *;
    }

    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|txt|srt|swf)$ {
        root /var/www/mywebsite/site/;
        expires 30d;
    }

    ssl_certificate /etc/letsencrypt/live/www.mywebsite.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.mywebsite.com/privkey.pem;
}

# Redirection
server {
    listen 80;
    server_name mywebsite.com www.mywebsite.com;

    location / {
        return 301 https://www.mywebsite.com$request_uri;
    }
}
和我的nuxt配置文件:

    const pkg = require('./package')

module.exports = {
    mode: 'universal',

    loading: { color: '#bb2b4d' },

    router: {
        linkActiveClass: '-active',
        base: '/'
    },

    css: ['@/assets/icons/css/icons.css', '@/assets/snickles/snickles.css'],

    plugins: ['~plugins/vue-filters.js', '~plugins/vue-modal.js'],

    minify: {
        removeEmptyAttributes: false,
        collapseWhitespace: true,
        conservativeCollapse: true,
        collapseBooleanAttributes: true,
        removeTagWhitespace: false,
        removeStyleLinkTypeAttributes: true
    },

    modules: [

        '@nuxtjs/axios'
    ],

    axios: {

    },

    env: {
        api: {
            spots: `https://rest.mywebsite.com/spots`
        }
    },

    proxy: {
    },

    build: {
        extend(config, ctx) {
            // Run ESLint on save
            if (ctx.isDev && ctx.isClient) {
                config.module.rules.push({
                    enforce: 'pre',
                    test: /\.(js|vue)$/,
                    loader: 'eslint-loader',
                    exclude: /(node_modules)/
                })
            }
        }
    },

    postcss: [require('autoprefixer')],

    vendor: ['moment', 'vue-js-modal']
}
我忘了什么吗? 最奇怪的是,当我在自己的电脑上而不是在服务器上做同样的事情时,它工作得非常好。我检查了npm和节点版本,它们是相同的(最新的)。此外,如果使用来自NuxtJS的演示模板进行测试,那么它可以在完全相同的服务器配置下完美工作

顺便说一下,服务器是Debian8,所有包都是最新的

提前谢谢你的提示

编辑:如果有任何用途,错误日志:

2018/02/14 19:12:54 [error] 12981#12981: *239930 open() "/var/www/mywebsite/site/_nuxt/pages/spot/_slug.e57cc2e78d8e0b160fe7.js" failed (2: No such file or directory), client: xxx.xxx.xxx.xxx., server: www.mywebsite.com, request: "GET /_nuxt/pages/spot/_slug.e57cc2e78d8e0b160fe7.js HTTP/2.0", host: "www.mywebsite.com", referrer: "https://www.mywebsite.com/"
2018/02/14 19:12:57 [error] 12981#12981: *239930 open() "/var/www/mywebsite/site/_nuxt/manifest.3a7efd91c5f63f114507.js" failed (2: No such file or directory), client: xxx.xxx.xxx.xxx, server: www.mywebsite.com, request: "GET /_nuxt/manifest.3a7efd91c5f63f114507.js HTTP/2.0", host: "www.mywebsite.com", referrer: "https://www.mywebsite.com/"
2018/02/14 19:12:57 [error] 12981#12981: *239930 open() "/var/www/mywebsite/site/_nuxt/vendor.7519259bf7bdf608079e.js" failed (2: No such file or directory), client: xxx.xxx.xxx.xxx, server: www.mywebsite.com, request: "GET /_nuxt/vendor.7519259bf7bdf608079e.js HTTP/2.0", host: "www.mywebsite.com", referrer: "https://www.mywebsite.com/"
2018/02/14 19:12:57 [error] 12981#12981: *239930 open() "/var/www/mywebsite/site/_nuxt/app.a5cb9356f53306f973dc.js" failed (2: No such file or directory), client: xxx.xxx.xxx.xxx, server: www.mywebsite.com, request: "GET /_nuxt/app.a5cb9356f53306f973dc.js HTTP/2.0", host: "www.mywebsite.com", referrer: "https://www.mywebsite.com/"
同样,它与其他nuxt项目配合使用也非常好,具有类似的配置。实际上,它在这个文件夹中找不到这些文件,因为它们不在其中——这是完全正常的。由应用程序来获取这些文件的路径,它通常做得很好,使用相同的目录输出(正如我所说,它应该不在_numxt文件夹中)


谢谢。

这被标记为
nginx
,因此,这里是nginx解决问题的方法

通过注释进行故障排除后,您报告在
错误日志中收到以下信息:

2018/02/14 19:12:57[错误]12981#12981:*239930 open()“/var/www/mywebsite/site/nuxt/manifest.3a7efd91c5f63f114507.js”失败(2:没有这样的文件或目录),客户端:xxx.xxx.xxx.xxx,服务器:www.mywebsite.com,请求:“GET/nuxt/manifest.3a7efd91c5f63f14507.js HTTP/2.0”,主机:“www.mywebsite.com”,推荐人:"https://www.mywebsite.com/“

随后,运行
find/-type f-name manifest.3a7efd91c5f63f114507.js
或类似程序,相应的文件位于
/var/www/mywebsite/site/.nuxt/dist

因此,您的nginx配置是错误的,因为您让它在不正确的文件夹中查找这些内容-您的配置具有
root/var/www/mywebsite/site/;

正确的方法可能是将基于前缀的
位置
与指令一起使用:

location /_nuxt/ {
    alias /var/www/mywebsite/site/.nuxt/dist/;
}
但是,如果
/\u nuxt/
有可能必须将
代理传递到上游的内容,并且您希望继续使用原始配置中已有的基于
位置,那么下面类似的替代解决方案也是一个选项(否则,您显然必须将其作为冗余删除,以确保先前基于前缀的位置有效,请参阅):


这被标记为
nginx
,因此,这里是nginx解决问题的方法

通过注释进行故障排除后,您报告在
错误日志中收到以下信息:

2018/02/14 19:12:57[错误]12981#12981:*239930 open()“/var/www/mywebsite/site/nuxt/manifest.3a7efd91c5f63f114507.js”失败(2:没有这样的文件或目录),客户端:xxx.xxx.xxx.xxx,服务器:www.mywebsite.com,请求:“GET/nuxt/manifest.3a7efd91c5f63f14507.js HTTP/2.0”,主机:“www.mywebsite.com”,推荐人:https://www.mywebsite.com/“

随后,运行
find/-type f-name manifest.3a7efd91c5f63f114507.js
或类似程序,相应的文件位于
/var/www/mywebsite/site/.nuxt/dist

因此,您的nginx配置是错误的,因为您让它在不正确的文件夹中查找这些内容-您的配置具有
root/var/www/mywebsite/site/;

正确的方法可能是将基于前缀的
位置
与指令一起使用:

location /_nuxt/ {
    alias /var/www/mywebsite/site/.nuxt/dist/;
}
但是,如果
/\u nuxt/
有可能必须将
代理传递到上游的内容,并且您希望继续使用原始配置中已有的基于
位置,那么下面类似的替代解决方案也是一个选项(否则,您显然必须将其作为冗余删除,以确保先前基于前缀的位置有效,请参阅):


错误日志是怎么说的?你是说,nginx错误日志?没有什么用处,只是文件不存在,与控制台日志相同。它在.nuxt/目录中查看这些文件,它们在.nuxt/dist/(默认配置)中但是,即使我复制了.Nuxt/Directory中的文件,它也一直说它不能达到.LOL,所以,NGIX在日志文件中寻找这些文件的有价值的信息,而不是考虑它应该在哪里看,并且你认为它没有任何用处。"?!祝你好运!如果你没有这些信息,没有人能帮助你!@cnst好吧,我对这一点并不陌生。标题是指NuxtJS,而不是Nginx,因为我知道问题不是来自我的Nginx配置,我在我的帖子中添加了Nginx配置,从一开始就清楚这一点。它与dem完美结合o来自NuxtJS社区的模板,并且输出完全相同(.nuxt文件夹,dist文件夹内,等等),并且它工作正常,没有对我的Nginx配置进行任何更改。因此,这是我的NuxtJS应用程序和/或配置的问题,与Nginx无关。@cnst但很公平,我已将日志添加到原始帖子中。请让我知道这是否有助于您理解问题的根源。错误日志说什么?您是说,Nginx错误日志没有什么有用的,只是文件不存在,与控制台日志相同