fs.writeFileSync 无法在此处设置 DOCTYPE

fs.writeFileSync Can't set DOCTYPE here

此 Meteor 代码使用 fs.writeFileSync 将文件保存到具有 html 扩展名的光盘,保存文件正常但我收到以下服务器错误

While processing files with templating-compiler (for target web.browser): screen_shots/page.html:1: Can't set DOCTYPE here. (Meteor sets for you)

以及以下浏览器控制台消息

Uncaught SyntaxError: Unexpected token < in JSON at position 1

知道如何解决这个错误吗?谢谢

import { Meteor } from 'meteor/meteor';
const puppeteer = require('puppeteer'); //maybe change const to let
const fs = require('fs')
//.... SOME CODE HERE...
let searchLink = await page.$('input[alt="Search"]')
await searchLink.click()

await page.waitForNavigation()
const html = await page.content()
fs.writeFileSync("/screen_shots/page.html", html, 'utf8') //removing utf8 did not eleminate the error

/screen_shots/page.html 的位置在您的源代码树中,这会导致 Meteor 开始重建,并中止它正在做的事情。你绝对不想要这个。 Meteor 监视所有明确导入的源文件,以及 clientserver 文件夹中的任何内容。

When running meteor or meteor run in this mode, all files excepted of those in the folder /imports are loaded automatically. There are also a few other rules to it, all can be found on this page: https://guide.meteor.com/structure.html#load-order

这里有更多信息:

您在同一文件夹中写入的 .png 个文件也会自动加载,但不会导致错误。

您可能不会写入文件系统

既然您已了解发生了什么,您可能希望避免写入文件系统。这有几个原因

  1. 使用docker时,本地文件系统默认为只读
  2. 您可以附加卷,但您需要将其附加到伸缩组中的每个服务器
  3. 卷已满
  4. S3(或类似)更方便,您可以对文件应用策略和权限