我正在尝试从index.ts中用fs.readFile('../emailTemplates/template.html')读取html文件
我的文件夹:
--src
--index.ts
--UsersFunctions
--UserFunctions.ts
--emailTemplates
--template.html
来自index.ts:
import * as UsersFunctions from './UsersFunctions/UsersFunctions';
export const newUserRegister = UsersFunctions.onCreateNewUser;
来自UsersFunctions.ts
export const onCreateNewUser = functions.firestore.document('users/allUsers/usersData/{userId}').onCreate(async (snap, context) => {
fs.readFile("../emailTemplates/template.html", {encoding: 'utf-8'}, (err, html) => {
if (err) {
console.log(err);
}
else {
}
});
}
我从firebase函数中得到一个错误:
Error: ENOENT: no such file or directory, open '../emailTemplates/template.html'
at Error (native)
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: 'user_code/lib/emailTemplates/newUserRegisterHtmlTemplate.html'
我只想发送一封带有html模板的电子邮件,也许还有其他方法可以做到?我试着搜索,但没有找到任何有关电子邮件模板的frirebase函数和typescript
发布于 2018-06-24 00:40:16
问题是您的模板路径与您的项目文件组织不匹配。我建议您只将TypeScript源代码放在src
中,并将您想要读写的所有其他文件放在与src
相同级别的functions
文件夹下。所以,你可以这样组织你的文件:
/functions
/src
/index.ts
/other source files
/emailTemplates
/template.html
然后,在index.ts中,您可以使用相同的路径../emailTemplates/template.html
读取template.html。
发布于 2019-03-20 00:35:18
您需要使用Path.join(__dirname, ...)
才能从磁盘读取文件。Firebase函数确实正确地上传了围绕您的代码的附加文件;但是,函数的内部结构会导致process.CWD
信息搞乱相对导入。
const templatePath = Path.join(__dirname, 'emailTemplates', 'template.html');
fs.readFile(templatePath, 'utf-8', (err, template) => {
// ...
});
https://stackoverflow.com/questions/50999550
复制相似问题