vue生产模式下静态资产url中的“localhost”

Posted

技术标签:

【中文标题】vue生产模式下静态资产url中的“localhost”【英文标题】:"localhost" inside static assets url on vue production mode 【发布时间】:2020-04-30 04:07:19 【问题描述】:

我确实将我的项目部署到 Firebase 托管,但问题是我在某些请求图像的请求时收到以下错误。然而,我的图片在我的网站上完美显示:

加载资源失败:net::ERR_CONNECTION_REFUSED

注意请求中的路径包含http://localhost:8000/img/而不是http://mydomain/img/

这是我如何定义图像路径的最小示例:

<v-img :src="require('@/assets/img/sellings.png')" />

我确实在路由器中启用了历史 (mode: 'history') 模式

此外,在 firebase.json 配置中,我确实有以下内容:

"hosting": 
    "public": "dist/",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "rewrites": [
      
        "source": "**",
        "destination": "/index.html"
       
    ]

vue.config.js 我确实有以下内容:

global.__rootDirname = path.join(__dirname, 'dist')

导致问题的原因是什么?任何帮助表示赞赏。

【问题讨论】:

如何启动服务器? @MickaelB。在本地主机上我做npm run serve,在我部署到生产之前我做npm run build 这可能是CORS错误,协议、域和端口必须匹配。即使最终的目标相同,写入的地址和当前的 URL 也会在某个时间点进行比较。 npm run serve中的命令是什么 【参考方案1】:

如果您使用vue-cli-service,您可以使用--host--public 参数

$ npx vue-cli-service serve --help
    --host         specify host (default: 0.0.0.0)
    --public       specify the public network URL for the HMR client

所以尝试运行

npx vue-cli-service serve --public mydomain

npm run serve -- --public mydomain

【讨论】:

问题出在生产模式。我在本地主机上没有问题。 您给定的命令都将在本地为我的应用程序提供服务。 npm run build 有一些东西会生成错误的网址。 您的npm run build 中有什么内容? npm run build 是将项目构建为静态资产的命令。这不是我的书面命令。 检查package.json 文件,转到scripts 属性,然后转到build 并复制粘贴那里的内容。 serve 属性也一样

以上是关于vue生产模式下静态资产url中的“localhost”的主要内容,如果未能解决你的问题,请参考以下文章

vue.js 应用程序中静态资产的路径

资产文件未合并到生产中

rails - 在生产模式下找不到 application.css 资产

Rails 不会在生产模式下加载我的图像资产

Vue CLI - 在静态文件中包含资产文件夹中的图像

vue打包后 history模式 跟子目录 静态文件路径 分析