javascript - 无法使用 Promise、catch 和 gulp 将文件写入 dist 文件夹
问题描述
我正在映射一个 index.html 文件以抓取标签内容并保存为名为 fonts.css 的文件
这是我的风格:
<style>@font-face{font-family:Averti;src:url(https://services.serving-sys.com/HostingServices/custdev/site-140253/Averti/Averti-Bold.woff) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:Averti-Light;src:url(https://services.serving-sys.com/HostingServices/custdev/site-140253/Averti_Webfonts/Averti-Light.woff) format('truetype');font-weight:400;font-style:normal}</style>
该功能没有重大错误,但 console.log 向我显示 { [Error: ENOENT: no such file or directory, open './dist/css/fonts.css'] errno: -2, code: 'ENOENT',系统调用:'open',路径:'./dist/css/fonts.css' }
我不确定这是否正确,因为该文件甚至还没有创建。
请参阅下面的功能,让我知道我缺少什么。
先感谢您。
async function createStyle(){
var jsonObject = []
setTimeout(function(){
fs.readFile('./dist/index.html', 'utf8', function(err, html){
if (!err){
const $ = cheerio.load(html)
var cssScript = $('head > style').map(( i, x ) => x.children[0])
.filter(( i, x ) => x && x.data.match(/@font-face/)).get(0);
jsonObject.push(cssScript)
exportStyle(jsonObject)
}
})}, 2000);
async function exportStyle(_json) {
const stylePromise = new Promise(function(resolve, reject) {
fs.writeFile('./dist/css/fonts.css', _json, err => {
if (err) {
reject();
} else {
resolve();
console.log('Created: fonts.css');
}
console.log(err);
});
});
(async function() {
try {
await stylePromise;
} catch(err) {
console.log(err);
}
})();}}
解决方案
我在 ./dist 文件夹中创建了 css 和 js 文件夹,代码就像一个魅力。除此之外,错误消息会出现在控制台中。
推荐阅读
- linux - 无法在 Linux Mint 中安装 Jmeter 插件管理器
- vue.js - 如何使用 Vue js 获取选项标签的 value 属性的值?
- google-chrome-extension - Chrome 扩展在页面操作中显示弹出窗口
- java - 在 JPQL 中查找具有最多关系的实体
- java - 是否应该将模型列表放在另一个模型中?
- java - SWT Combo 的自动完成提案
- jquery - 当我单击悬停菜单时,jquery 向上滑动功能不起作用
- c++ - 减去 n 次 int 值
- android - 获取开关小部件切换按钮的坐标
- macos - 如何使 gitflow 允许创建多个修补程序?