使用 Node.JS、Express 和 EJS 实现 browserify 的示例

Posted

技术标签:

【中文标题】使用 Node.JS、Express 和 EJS 实现 browserify 的示例【英文标题】:Example of browserify implementation with Node.JS, Express, and EJS 【发布时间】:2017-02-06 19:20:07 【问题描述】:

我无法让 browserify 在我的网络应用上运行。

我在终端浏览器并创建 bundle.js 文件。我把它放在我的 public/javascripts 文件夹中,并将它包含在我的 EJS 文件中,但仍然无法让代码工作:

终端:

browserify public/javascripts/chat.js > bundle.js

chat.js 文件:

$(function() 
    var parse = require("parse").Parse;
    let query = new Parse.Query('Chat');
    let subscription = query.subscribe();

    subscription.on('open', () => 
        //console.log('subscription opened');
        alert("sub opened");
    );

    subscription.on('create', (object) => 
        //console.log('object created: ' + object.get('message'));
        alert('object created: ' + object.get('message'))
    );
);

ejs 文件:

<script src="javascripts/bundle.js "></script>

【问题讨论】:

【参考方案1】:

src="javascripts/bundle.js"相对路径。当您的应用程序到达此路径时,它将在您的 server.js (或运行节点进程的任何文件)所在的同一文件夹中查找名为 javascript 的文件夹,但无法找到它;因为我很确定您不会在公用文件夹中提供后端应用程序。

我想你的意思是src="/javascripts/bundle.js"。现在它是一个绝对路径,如果您从public 文件夹提供静态文件:

app.use(express.static(path.join(__dirname, 'public')));

无论您server.js 位于或运行的位置,此文件都将从http://yourhost/javascripts/bundle.js 提供。

【讨论】:

我在 src 文件中得到 200,但我仍然无法从 bundle.js 文件访问 Parse 模块【参考方案2】:

更新:没有意识到这一点,但我必须在 bundle.js 脚本下包含 chat.js 脚本并让它工作。谢谢@Dnitro

改为:

<script src="javascripts/bundle.js "></script>
<script src="javascripts/chat.js "></script>

【讨论】:

以上是关于使用 Node.JS、Express 和 EJS 实现 browserify 的示例的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 mongodb、node.js、express 和 EJS 创建动态站点地图?

Node JS+Express:如何在 HTML(EJS) 中定义和使用 MySQL 数据?

使用 Node.Js、Express 和 EJS 在索引页面的不同部分显示博客文章

在Javascript(node.js,express.js,ejs)中访问服务器端变量[关闭]

无法让样式表与 node.js 的 ejs 一起使用

如何在 Node.js 和 Express 上的同一个 .ejs 文件上呈现 MySQL 查询的多个结果?