0

所以这可能很幼稚,但我可以在浏览器中运行仅节点样式的应用程序吗?我已经看到了前端的东西。我见过后端的东西。我想在浏览器中运行https://github.com/lapwinglabs/x-ray并做一些快速而肮脏的事情(这段代码可能并不完美)

$(document).ready(function() {
  var phantom = require('x-ray-phantom');
  var Xray = require('x-ray');

  var x = Xray()
    .driver(phantom());

  x('http://google.com', 'body')(function(err, str) {
    $( "body" ).replaceWith( "str" );
  });
});

尽管没有 iframe,但要完成整个站点。目的是让我可以以某种全球方式在公司内部资产上重新编写 CSS。我将能够只传递一个 url 并显示页面。如果我有自定义 css,那么它将处于活动状态。我仍然需要进行身份验证,但此时此刻我并不担心。

我过去曾使用过 x 射线和 express,它的作用就像一个魅力。在这种情况下,尽管我喜欢 Laravel 并希望在其中支持我的应用程序。

最新的 Laravel 有“mix”,一个 web pack 前端。它适用于前端资产。如果我尝试 webpack x-ray,我会遇到一系列问题,例如:

未找到模块:错误:无法解析 yadayadayada

因此,您可以像这样设置导出:

module.exports.node = {
    fs: 'empty',
    net: 'empty',
    tls: 'empty'
};

虽然这修复了模块错误,但我觉得我需要这些东西。在浏览器中我得到:

未捕获的错误:找不到模块“child_process”

我有一种感觉,这样的事情不应该起作用,但我希望我弄错了。

4

1 回答 1

0

fs简单的答案是:你不能在浏览器中使用像or这样的 Node 内置模块net,以及使用它们的模块。

您可以像使用该node选项一样清空它们,但是依赖它们的模块出于某种原因使用它们并且您会破坏它们,除非您确切知道使用内置模块的部分不会结束在您的应用程序中,或者至少您没有使用它。

在您的情况下,首先它抱怨fs,这在浏览器中显然没有意义,因为您无权访问文件系统。然后它抱怨child_process,所以它在模块的某个地方产生了进程,但你也不能在浏览器中这样做,并且清空它很可能会破坏模块的功能,所以你需要寻找另一个模块,可以在浏览器中使用。

于 2017-03-15T09:14:48.057 回答