在 node js 中使用导出功能有问题

时间:2021-05-19 08:55:59

标签: node.js pug nodemailer

pug.compiler.js 的代码是:


/**
 * Pug Utilities
 */
 const {compileFile} =require('pug');
 /**
  * 
  * @param {String} relativeTemplatePath Pug template name
  * @param {Object} [data] Object
  * @returns {String} HTML
  */
 export function compile(relativeTemplatePath, data){
     let absoluteTemplatePath = process.cwd() + '/src/views/' + relativeTemplatePath + '.pug';
     let compiledTemplate = compileFile(absoluteTemplatePath)(data);
     return compiledTemplate;
 };

错误是:

 export function compile(relativeTemplatePath, data){
 ^^^^^^

SyntaxError: Unexpected token 'export'
    at wrapSafe (internal/modules/cjs/loader.js:984:16)
    at Module._compile (internal/modules/cjs/loader.js:1032:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
    at Module.require (internal/modules/cjs/loader.js:957:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (D:\ProgramData\projects\nodejs\whatsapp\test\app.js:11:22)
    at Module._compile (internal/modules/cjs/loader.js:1068:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)

所以我在理解如何使用此导出功能时遇到问题。我认为它应该可以正常工作?

1 个答案:

答案 0 :(得分:0)

问题是 NodeJS 默认将模块视为 CommonJS Modules

因此,您应该使用 export 而不是 module.exports,或者如果您使用的是 NodeJS v13+,您可以通过以下任一方式启用 ES 模块:

  • 将文件的扩展名更改为 mjs
  • "type": "module" 属性添加到您的 package.json

使用 module.exports 应该是这样的:

function compile(relativeTemplatePath, data){
     let absoluteTemplatePath = process.cwd() + '/src/views/' + relativeTemplatePath + '.pug';
     let compiledTemplate = compileFile(absoluteTemplatePath)(data);
     return compiledTemplate;
 };

module.exports = {compile};
相关问题