Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应+;Express+;Nodemailer:Can';t将组件和节点生成器一起渲染_Javascript_Node.js_Reactjs_Express_Nodemailer - Fatal编程技术网

Javascript 反应+;Express+;Nodemailer:Can';t将组件和节点生成器一起渲染

Javascript 反应+;Express+;Nodemailer:Can';t将组件和节点生成器一起渲染,javascript,node.js,reactjs,express,nodemailer,Javascript,Node.js,Reactjs,Express,Nodemailer,我希望使用客户端路由呈现我的React应用程序,并希望使用NodeEmailer发送邮件。因为nodeEmailer不能在客户端使用,所以我必须在Express服务器上实现它。 这就是服务器的外观: express.js router.use(express.static(path.resolve(__dirname, '..', 'build'))) router.get('*', (req, res) => { res.sendFile(path.resolve(__dirname,

我希望使用客户端路由呈现我的React应用程序,并希望使用NodeEmailer发送邮件。因为nodeEmailer不能在客户端使用,所以我必须在Express服务器上实现它。 这就是服务器的外观:

express.js

router.use(express.static(path.resolve(__dirname, '..', 'build')))

router.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, '..', 'build/index.html'))
})

router.get('/sendmail', (req, res) => {
transporter.sendMail(options, (error, info) => {
      if (error){
        console.log(error)
      }
      console.log('Message was send!')
    })
})
1) 因此,这会呈现React组件,但当我路由到“/sendmail”时,会显示一个空白页面,index.html在没有js的情况下呈现,并且不会发送邮件

2) 如果我删除第一行
router.use(express.static…
并路由到“/sendmail”,邮件将被发送,但我的应用程序不会呈现

我还尝试了以下方法:

router.use(express.static(path.resolve(__dirname, '..', 'build')))

router.get('*', (req, res) => {
  console.log('path', req.path)

  if (req.path === '/sendmail') {
      transporter.sendMail(options, (error, info) => {
      if (error){
        console.log(error)
      }
      console.log('Message was send!')
    })
  } else {
    res.sendFile(path.resolve(__dirname, '..', 'build/index.html'))
  }
});

任何解决方案?

只需更改express中路线的顺序,它们将从上到下匹配:

router.use(express.static(path.resolve(__dirname, '..', 'build')))

router.get('/sendmail', (req, res) => {
// this will be processed when you send a GET for /sendmail to your express server
....
}

router.get('*', (req, res) => {
  res.sendFile(path.resolve(__dirname, '..', 'build/index.html'))
  // this will always match if the request is not /sendmail
})

已经尝试过了,但没有成功。就像express.static控制和router.get被忽略一样。您想在生产或开发模式下执行此操作吗??