我正在尝试使用node.js运行我的浏览器。我检查了终端,我的javascript文件包含node.js函数运行良好。但是,当我运行连接到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));
}
});
我知道我拥有所有必需的文件,因为该文件在终端中运行。因此我继续包括:
<script src ="https://cdn.socket.io/socket.io-1.4.5.js"></script>
在连接我的javascript文件之前,在我的index.html中。
但是我的javascript文件仍然返回相同的错误,即未定义require函数。难道我做错了什么?有没有办法在浏览器中运行这个javascript文件有node.js但是没有使用browserify(这在过去导致了一些目录问题)?
答案 0 :(得分:2)
虽然Node和浏览器都运行JavaScript(ECMAScript),但这并不意味着环境是相同的。
特别是,浏览器中有许多API和全局变量可用于节点(文档,窗口等)以及Node中的其他全局变量和API,这些变量在浏览器中不可用(需要等等。)
为了执行使用特定于节点的全局变量(如require()
)的代码,需要为您定义和填充这些变量。这正是像webpack或browserify或systemjs那样的东西。即使这样,您也需要确保您引入的模块将在浏览器中运行。
答案 1 :(得分:0)
浏览器还没有(像)nodejs这样的内置模块系统。如果要使用模块(如节点),请考虑使用browserify或requirejs库。