requireJS和节点模块。怎么要求?

时间:2013-11-16 21:16:34

标签: node.js requirejs

我需要我的应用程序发送电子邮件,所以我遇到了nodemailer,简单快捷的解决方案。在发送node app.js电子邮件后尝试了。大。而且我知道这将是一个非常简单的问题,但请与我一起,这是我第一次遇到node.js世界。

现在,我希望我的网络应用程序能够发送电子邮件,并且由于require未在浏览器端定义,因此我最终阅读了browserifycommonJS以及最后{{1} }。

尝试使用简单的requireJS文件,它似乎非常简单。现在,我坚持使用存储我的.js模块的文件夹node_modules。

我该怎么做?在docs它说我不应该nodemailer所以我怎样才能require("./node_modules/foo/foo").我的模块?我找不到任何完整的例子。

我的应用程序相关文件的结构是这样的。

require *
Project/index.html Project/js/app.js
//my own mvc app.js, not requireJS's Project/js/mailer.js
//.js that holds the nodemailer code for sending emails Project/node_modules/requirejs //requirejs.js inside Project/node_modules/nodemailer

更新

(因为它花了我一整天)

我收到//nodemailer module找不到Uncaught Error: Script error for: nodemailer文件。它在root directoy中寻找它。为什么? nodemailer.js在node_modules中找不到它吗?

的index.html

requireJS

Main.js

<script
    type="text/javascript"
    data-main="main"
    src="./node_modules/requirejs/require.js">
</script>

知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

请理解浏览器具有一组特定的功能,直接发送电子邮件不是其中之一。 Browserify只能在浏览器内部创建一组非常有限的简单nodejs模块,但它不能神奇地使浏览器能够读取任意文件,建立任意网络连接,进行DNS查找以及其他已明确添加的内容。节点使其进入服务器环境。有一些误导性的浏览器文档围绕这个,但不,你不能采取任意节点模块,通过browserify运行它,并在浏览器中使用它。你需要做一些事情:

  • 使用旧的<a href="mailto:...">链接
  • 向服务器发出ajax请求,并让服务器代表浏览器发送邮件