繁体   English   中英

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

[英]Problems running node.js in browser

我正在尝试使用 node.js 功能运行我的浏览器的应用程序。 我检查了终端,我的包含 node.js 函数的 javascript 文件运行良好。 但是,当我运行连接到 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 函数的相同错误。 难道我做错了什么? 有什么方法可以在具有 node.js 的浏览器中运行这个 javascript 文件,但特别是不使用 browserify(这在过去导致了一些目录问题)?

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

特别是,浏览器中有许多 API 和全局变量在 node(文档、窗口等)中不可用,而 Node 中的其他全局变量和 API 在浏览器中不可用(require 等)。 )

为了执行使用 Node 特定全局变量(如require() ,需要为您定义和填充它们。 这正是 webpack、browserify 或 systemjs 之类的东西为你做的。 即便如此,您也需要确保引入的模块将在浏览器中运行。

浏览器没有(还)任何像 nodejs 这样的内置模块系统。 如果你想使用模块,比如在 node 中,可以考虑browserifyrequirejs库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM