vue修改index.html无效,vue在index.html中引入静态文件不生效问题及解决方法

5268f80b9b1e01f982625ef6fac83ca1.png

本文针对的是Vue小白,不喜勿喷,谢谢

出现该问题的标志如下

控制台warning(Resource interpreted as Stylesheet but transferred with MIME type text/html)

329fe217daf001718acad3729df19aab.png

出现的原因及解决办法

第一种可能出现原因就是引入的静态文件在src文件夹内,这种的解决办法就是把资源引入静态资源的目录static

第二种可能出现的原因就是有单独的静态资源目录但是名字不叫static,这种的解决办法更改配置文件,把对应的几个配置文件内的static更改为你自己所创建的静态资源目录,由于网上大多教程所改的地方都不够完全,还是会出现该问题,所以这也是今天为什么要写这篇文章的原因。

需要更改的有3个文件,分别是config文件夹下的index.js,build文件夹下的webpack.dev.conf.js和webpack.prod.conf.js

假如你的静态资源文件夹叫public,和src文件夹同级,需要修改的如下

1. index.js

dev: {

assetsSubDirectory: 'public',//原本是static,现在改为public

assetsPublicPath: `/${name}/`,

...

build: {

index: path.resolve(__dirname, '../dist/index.html'),

assetsRoot: path.resolve(__dirname, '../dist'),

assetsSubDirectory: 'public',//原本是static,现在改为public

2. webpack.dev.conf.js

// copy custom static assets

new CopyWebpackPlugin([

{

//下面原本是static,现在改为public

from: path.resolve(__dirname, '../public'),

to: config.build.assetsSubDirectory,

ignore: ['.*']

}

])

3. webpack.prod.conf.js

// copy custom static assets

new CopyWebpackPlugin([

{

//下面原本是static,现在改为public

from: path.resolve(__dirname, '../public'),

to: config.dev.assetsSubDirectory,

ignore: ['.*']

}

])

总结

以上所述是小编给大家介绍的vue在index.html中引入静态文件不生效问题及解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

1428d0e076c3959ab11d28a39bc84fab.png

5268f80b9b1e01f982625ef6fac83ca1.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

### 解决方案 为了在 Vue2 项目的 `index.html` 中成功引入并使全局 JavaScript 文件生效,需遵循特定配置流程。对于 vue-cli 3.0 版本而言,推荐的做法是在 public 文件夹下放置所需的静态资源文件[^1]。 #### 正确路径与文件位置 确保要引入的 JS 文件位于 `public` 目录内而非旧版中的 `static` 文件夹。这一步骤至关重要,因为打包工具默认不会处理不在指定目录内的静态资产。 #### 修改 index.html 编辑 `public/index.html` 文件来引用这些外部脚本: ```html <!DOCTYPE html> <html lang="en"> <head> <!-- 其他头部标签 --> </head> <body> <div id="app"></div> <!-- 引入公共 js 脚本 --> <script src="/your-script.js"></script> <!-- 注意这里的斜杠表示相对于根路径 --> </body> </html> ``` #### 配置 Webpack (针对自定义构建需求) 如果遇到即使按照上述方式操作仍无法正常加载的情况,可能是因为项目结构基于早期版本(如vue-cli 2.x),此时需要调整多个配置文件以适应新环境的要求[^5]。具体涉及修改如下三个主要配置项: - config/index.js - build/webpack.dev.conf.js - build/webpack.prod.conf.js 然而,在现代开发实践中更建议利用官方提供的插件机制或通过扩展 `vue.config.js` 来简化此过程而不是直接篡改内部配置文件[^4]。 #### 使用 vue.config.js 进行优化 可以通过编辑 `vue.config.js` 添加额外的 HTML 插件来自动生成必要的 `<script>` 标签而无需手动维护 `index.html`: ```javascript const path = require('path'); module.exports = { chainWebpack: config => { const types = ['vendor', 'manifest']; // 移除默认注入到 body 底部的行为 types.forEach(type => { config.optimization.splitChunks.cacheGroups[type].priority -= 1; }); // 向页面头信息中追加 script 标记 config.plugin('html').tap(args => { args[0].chunksSortMode = 'none'; // 增加快照前缀以便于管理不同环境下使用的静态资源链接 let prefix = process.env.NODE_ENV === "production" ? "/prod-prefix/" : "/"; Object.assign(args[0], { links: [ { rel: 'stylesheet', href: `${prefix}style.css` } ], scripts: [ { src: `${prefix}global-utils.js`, async: true }, { src: `${prefix}another-global.js`, defer: true } ] }); return args; }) } } ``` 这种方法不仅保持了灵活性还增强了可移植性和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值