从GitHub部署网站至Netlify遇#字符文件名报错,求助解决
解决Netlify部署时文件名含
#的错误 我来帮你搞定这个头疼的部署问题!Netlify明确禁止部署的文件名/路径里包含#或?字符,而你遇到的node_modules/es5-ext/date/#/format.js就是典型的违规路径。你已经尝试过删除并升级es5-ext但没效果,大概率是因为你的项目依赖树里有其他包间接引用了旧版本的es5-ext,导致这个有问题的文件依然存在。
给你几个靠谱的解决方案,按顺序试试:
强制统一es5-ext的版本
这个是最有效的方法。在你的package.json里添加resolutions字段,强制所有依赖都使用修复了路径问题的es5-ext版本(v0.10.53及以后的版本已经移除了带#的路径):"resolutions": { "es5-ext": "^0.10.53" }- 如果用Yarn:直接运行
yarn install就会生效; - 如果用npm:需要先安装
npm-force-resolutions工具,然后修改package.json的scripts:
之后再运行"scripts": { "preinstall": "npx npm-force-resolutions" }npm install。
- 如果用Yarn:直接运行
彻底清理依赖缓存
有时候旧的依赖缓存会导致问题残留,执行以下步骤:- 删除
node_modules文件夹 - 删除
package-lock.json(npm)或yarn.lock(yarn) - 重新运行
npm install/yarn install - 提交更新后的锁文件到GitHub,触发Netlify重新部署
- 删除
检查依赖树,定位深层依赖
运行npm ls es5-ext(npm)或yarn list es5-ext(yarn),查看所有引用es5-ext的包,确认是不是某个第三方包还在依赖旧版本。如果发现了,除了用resolutions强制替换,也可以考虑给那个包提issue或者等待它更新依赖。应急方案:临时移除违规文件
如果上面的方法都来不及试,可以在Netlify的构建命令里加一步删除违规文件的操作(不推荐长期用,可能影响包功能):rm -rf "node_modules/es5-ext/date/#" && 你的原有构建命令比如你的构建命令是
npm run build,就改成rm -rf "node_modules/es5-ext/date/#" && npm run build,在Netlify的项目设置里更新构建命令即可。
内容的提问来源于stack exchange,提问作者Magofoco
相关产品推荐
相关产品推荐

