【问题标题】:NUXT when is each dist folder used, html/.nuxt/dist/ html/dist/_nuxt/ html/static html/assets?NUXT 什么时候使用每个 dist 文件夹,html/.nuxt/dist/ html/dist/_nuxt/ html/static html/assets?
【发布时间】:2022-04-26 13:00:46
【问题描述】:

如果我使用: Nuxt @ v2.15.8
环境:生产
渲染:服务器端
目标:服务器

在这种情况下,NUXT 使用所有资产文件夹中的哪一个? 在这种情况下,NUXT 是否提供来自 html/.nuxt/dist/ 的资产,而不是来自 html/dist/_nuxt/ 或 html/static 或 html/assets 的资产?每个不同的 dist 文件夹的用途是什么?

我可以看到我所有的文件名在 html/.nuxt/dist/ 中与 chrome dev (example.com/_nuxt/example1234.js) 中所有丢失的 404 文件具有相同的名称,这就是我感到困惑的原因。

我现在运行 /nuxt start --port 3003 但通常是 pm2 start -- --port 3003。 两个命令的问题相同:所有资产都得到 404。

澄清一下:我只遇到实时 Ubuntu 20.04 NGINX 服务器上丢失文件的问题,而不是 Windows 11 本地的问题。

我现在也尝试设置publicPath:'example.com/cdn',并将/var/www/example.com/html/.nuxt/dist/client中的内容复制到/var/www/example.com /html/cdn 但是当我检查服务器 error.log 它说:“”/var/www/example.com/html/.nuxt/dist/cdn/85451fa.js”失败(2:没有这样的文件...... .” 我什至现在将相同的文件复制到 /var/www/example.com/html/.nuxt/dist/cdn 但即使在那之后我在所有资产上都得到了 404。我什至做了 sudo chmod -R 755 /var/www /example.com/html/cdn 在 Chrome 中是正确的 URL example.com/cdn/85451fa.js

所以我在 Chrome 控制台中得到 404: https://example.com/_nuxt/c4ffa45.js 但我可以看到该文件存在于此处: /var/www/example.com/html/.nuxt/dist/client/c4ffa45.js 所以我做了: sudo chmod -R 755 /var/www/example.com/html/.nuxt/dist 但仍然是 404。所以 NUXT 起始页的 html 由 PM2 提供,但没有脚本或图像。知道为什么吗?

如果我将项目作为服务器端渲染 ssr: true for SEO 和 target: server 运行,我是否在 NGINX 配置中使用正确的文件夹


    server {
    server_name www.example.com;
    # www to non-www for SEO canonical reasons
    return 301 http://example.com$request_uri;
    
        listen 443 ssl http2; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
        }
        
    server {
    server_name example.com;
    
    location / {
        proxy_pass http://localhost:3003;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        }
        
    root /var/www/example.com/html;
    index index.html index.php index.htm index.nginx-debian.html;
    
        # PHP
        ##location ~ \.php$ {
        ##include snippets/fastcgi-php.conf;
        ##fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        ##}
    
    location = /favicon.ico {
        log_not_found off; access_log off;
    }
    
    location = /robots.txt {
        log_not_found off; access_log off; allow all;
    }
    
    location /_nuxt/ {
        alias /var/www/example.com/html/.nuxt/dist/client/;
    }
    
    location ~* \.(ico|css|js|gif|jpeg|jpg|png|woff|ttf|otf|svg|woff2|webp)$ {
        rewrite ^/_nuxt(/.*) $1 break;
        root /var/www/example.com/html/.nuxt/dist/client;
        expires 24h;
        add_header Cache-Control private;
    }
    
    location ~* \.(ico|css|js|gif|jpeg|jpg|png|woff|ttf|otf|svg|woff2|webp)$ {
        root /var/www/example.com/html/static;
        expires 24h;
        add_header Cache-Control private;
    }
    
        # (For WordPress permalinks)
        #location / {
        #try_files $uri $uri/ /index.php$is_args$args;
        #}
    
        listen 443 ssl http2; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    
    }
    server {
        server_name test.example.com;
        # ssl_* directives here
        root /var/www/example.com/test;
        index index.php index.html index.htm index.nginx-debian.html;
        # PHP
        location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        } location = /favicon.ico {
        log_not_found off; access_log off;
        } location = /robots.txt {
        log_not_found off; access_log off; allow all;
        }
        location ~* \.(ico|css|js|gif|jpeg|jpg|png|woff|ttf|otf|svg|woff2|webp)$ {
        expires 24h;
        add_header Cache-Control private;
        }
        # (For WordPress permalinks)
        location / {
        try_files $uri $uri/ /index.php$is_args$args;
        }
    
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    
        } 
    
    server {
        if ($host = example.com) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    
    listen 80;
    server_name example.com;
        return 404; # managed by Certbot
    
    }
    server {
        if ($host = test.example.com) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    
    listen 80;
    server_name test.example.com;
        return 404; # managed by Certbot
    
    
    }

我的生态系统.config.js 如下所示:


    module.exports = {
        apps: [
          {
            name: 'app',
            exec_mode: 'cluster',
            instances: 'max', // Or a number of instances
            script: './node_modules/nuxt/bin/nuxt.js',
        cwd: '/var/www/example.com/html',
            args: 'start',
            env: {
              NODE_ENV: "production",
              PORT: 3003,
            },
          }
        ]
      } 

要运行,我使用:

yarn nuxt build
pm2 start -- --port 3003

【问题讨论】:

  • “澄清一下:我只遇到实时 Ubuntu 20.04 NGINX 服务器上丢失文件的问题,而不是 Windows 11 本地的问题。” - 如果你从另一个站访问那个 Win11 部署呢?
  • @NelsonLaRocca 我将整个 Windows 构建上传到 Ubuntu 服务器(刚刚替换了 Sharp),但我遇到了完全相同的问题,只有起始页 HTML 可见,没有资产。甚至根中的 favicon 也会得到 404。
  • 访问日志中有什么线索吗?
  • @NelsonLaRocca 日志中没有日期戳,但开头是:/home/user/.pm2/logs/example-error-1.log 说:FATAL No build files found in /var/www /example.com/html/.nuxt/dist/server。我可以看到该文件夹​​中的文件。

标签: vue.js nginx nuxt.js pm2


【解决方案1】:

终于成功了!

这就是我所做的:

sudo ufw allow 3003
pm2 stop nuxtAppName
pm2 start -- --port 3003

您可能还需要这样做:

pm2 delete nuxtAppName
pm2 save
yarn nuxt generate
cd /var/www/example.com/nuxtAppDir
pm2 start ecosystem.config.js -- --port 3003

我仍然想知道所有不同目录的不同用途,因为我现在总是需要手动将资产从 /var/www/example.com/release1/.nuxt/dist/client 复制到 /var/www/example.com/release1/dist/_nuxt 在每次新部署时

【讨论】:

  • :-) 只是一个防火墙问题。很棒
猜你喜欢
  • 2019-04-19
  • 1970-01-01
  • 2018-07-13
  • 2017-12-14
  • 2021-05-26
  • 1970-01-01
  • 2021-12-02
  • 2018-08-24
  • 1970-01-01
相关资源
最近更新 更多