在 Node.js 之外使用 require()

Use require() outside Node.js

本文关键字:require Node js      更新时间:2023-09-26

我正在尝试让一个与Node.js一起使用的Angular.js应用程序。

目前我在文件中有下面的代码MY-PROJECT/public/js/controllers.js

function LoginController( $scope )
{
  // fetch waiters
  var Waiter = require( '../models/waiter.js' );
}
LoginController.$inject = ['$scope'];

如您所见,我正在使用require()来访问模型文件。但似乎在此文件/文件夹中无法访问 require()-函数。

访问该页面时在控制台中遇到的错误是:

引用错误: 未定义要求

错误的原因肯定是因为我直接将这个控制器.js文件包含在带有脚本标签的HTML文件中(因此来自Node.js的require()函数不可用)。

现在我的问题是:如何在控制器.js文件中访问模型文件(例如从MY-PROJECT/models/waiter.js)?

提前非常感谢!

RequireJS看起来有你需要的东西。

我做错了。因为我正在制作一个"实时应用程序"(这是正确的名称吗?)并使用 Socket.io,所以它的工作方式不同。

在客户端控制器中,我向服务器发送一条消息以请求数据。服务器获取数据并将其发送回客户端。

因此,在客户端中,我实际上不需要模型,因为我从服务器获取 JSON 格式的数据。

这就是我解决它的方式,可能对其他人有用:

/**
* Login controller
*/
function LoginController( $scope, socket )
{    
    // listen to server when it sends you the cats
    socket.on( 'here-are-all-the-cats', function ( cats )
    {
        $scope.cats = cats;
    });
    // send message to the server, to request the waiters
    socket.emit( 'i-want-all-the-cats' );
}
WaiterController.$inject = [ '$scope', 'socket' ];

注意:我用"猫"而不是"服务员",只是为了让其他人更清楚。