在浏览器中运行node.js的问题

我正在尝试使用node.js函数运行我的浏览器。 我检查了terminal和我的JavaScript文件,其中包括node.jsfunction运行良好。 但是,当我运行连接到JavaScript文件的HTML文件时,浏览器返回一个错误,说明require函数没有被定义。 我知道这是因为浏览器不能单独运行node.js

我试图运行的node.js代码是访问一个Watson视觉识别api:

var watson = require('./node_modules/watson-developer-cloud'); watson.visual_recognition({ username : '49f5d504-9387-45c6-9fda-9b58a9afc209', password : 'IITqAn0VPaFr', version : 'v2-beta', version_date : '2015-12-02' }).listClassifiers({}, function(err, response) { if (err){ console.log(err); } else { console.log(JSON.stringify(response, null, 2)); } }); 

我知道我有所有必需的文件,因为文件在terminal中运行。 所以我继续包括:

 <script src ="https://cdn.socket.io/socket.io-1.4.5.js"></script> 

在我的index.html连接我的JavaScript文件之前。

但是,我的JavaScript文件仍然返回相同的错误,要求函数没有定义。 难道我做错了什么? 有没有什么办法可以在浏览器中运行这个JavaScript文件,有node.js,但是特别是没有使用browserify(这在过去导致了一些目录问题)?

虽然Node和浏览器都运行JavaScript(ECMAScript),但这并不意味着环境是相同的。

尤其是,在浏览器中有很多API和全局variables(节点(文档,窗口等)中不可用)以及Node中的其他全局和API(浏览器中不可用)(要求等等)中不可用的API和全局variables)

为了执行使用像require()这样的特定于Node的全局variables的代码,需要为你定义和填充这些variables。 这正是webpack或者browserify或者systemjs为你所做的事情。 即使这样,您仍然需要确保所引入的模块将在浏览器中运行。

浏览器还没有像nodejs这样的内置模块系统。 如果你想使用模块,比如在节点中,可以考虑使用browserify或者requirejs库。