- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个应用程序,该应用程序使用两个似乎相互冲突的组件。
liquidfun.js 和 node.js/NW.js
我正在使用 Liquidfun 进行流体模拟。我在 NW.js 中使用 window.get() 来设置窗口缩放级别。每个都可以独立工作。
这是我同时运行两者时出现的错误。
Uncaught ReferenceError: module is not defined liquidfun.js:3
Uncaught TypeError: undefined is not a function liquidfun.js:1443
我怀疑 Node 有一些函数属性与liquidfun库中的某些东西共享名称“模块”。
如何阻止 NW.js 处理 Liquidfun 脚本?
其他信息:
这些页面是从同一台计算机上的 xampp 服务器提供的,因此我必须使用“node-remote”来设置缩放级别。
编辑:
nw.js 加载的 HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>html5canvas</title>
<script src="libs/liquidfun.js"></script>
<script>
var gui = require('nw.gui');
win = gui.Window.get();
win.zoomLevel =[-10];
</script>
</head>
<body onload="init();" style="background-color:#D4D4D4">
<canvas id="canvas" width="2160" height="3840" style="background-color:#B1D1B1"></canvas>
</body>
<script>
var world = null;
var gravity = new b2Vec2();
function init(){
world = new b2World(gravity);
}
</script>
NW.js Package.json
{
"main": "main.html",
"name": "Fun Editor",
"node-remote" : "127.0.0.1"
}
这样做的结果就是原帖中提到的模块错误。当 Node 远程被删除时,液体乐趣报告加载成功。没有 Node 远程还有另一个错误
UncaughtReferenceError: require is not defined (program):1
最佳答案
问题是liquidfun首先评估它运行的环境,并且由于定义了require
,它期望module
和exports
如此以及。由于 nw.js 的特殊性,事实并非如此。因此,您需要像这样require
您的库:
<script>
var lf = require("./libs/liquidfun.js");
var world = null;
var gravity = new lf.b2Vec2();
function init(){
world = new lf.b2World(gravity);
}
</script>
现在,虽然这适用于几乎所有情况,但在这种情况下它本身并没有帮助,因为 Liquidfun 似乎没有导出必要的类(我不熟悉这个库,所以可能有一个这样做的方法)。正在关注this answer ,您可以在库末尾添加必要的导出:
module.exports = {
b2Vec2 : b2Vec2,
b2BodyDef : b2BodyDef,
b2PolygonShape : b2PolygonShape,
b2FixtureDef : b2FixtureDef,
b2World : b2World,
b2_dynamicBody : b2_dynamicBody,
setWorld : function(_world){ world=_world; }
};
解决这个问题的另一种方法(因为无论如何你都需要编辑liquidfun.js)是欺骗库以常规网络模式运行。您可以通过替换第一行中的这一位来完成此操作:
...process==="object"&&typeof require==="function";...
这样:
...process==="object"&&false;...
然后您可以按预期使用该库:
<script src="libs/liquidfun.js"></script>
<script>
var world = null;
var gravity = new b2Vec2();
function init(){
world = new b2World(gravity);
}
</script>
不用说,这两种解决方案都有点“hacky”并且不是最佳的。
关于javascript - 在 nw.js 中使用 Liquidfun.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34745386/
随着 Chrome 网上应用店应用程序即将停用,我已经成功地将我的应用程序转换为 nw.js 我对它的简单性和第一次运行的方式感到惊讶。我遇到的唯一棘手的事情是如何让我的应用程序图标在 mac 上显示
我想在一个世界中构建多个随机子图。因为,一般来说,子图的数量是不固定的,我不想为每个子图使用不同的品种。到目前为止,我对“手工”随机网络使用了一种非常粗鲁的方法(见下文),将“我的组”变量分配给海龟。
我知道 nw.js 通常是为了在客户端加载 html,但它也可以指向一个网站并显示吗?当我将 package.json 中的“main”值设置为 google.com 之类的值时,它不起作用。 我正在
在 nwjs 中构建 Web 应用程序会导致无法访问位于程序目录中的文件(以及 app.nw 文件),并且将所有文件添加到 nw 包中并不是一个好主意,因为某些文件可能需要在运行时通过 IO 进行更改
如果这是一个愚蠢的问题,我预先道歉。 当调用 nw:weighted-path-to 时,会返回一个链接列表,描述起始海龟和目标海龟之间的最短路径。 类似地,调用 nw:turtles-on-weig
我原以为 Node Webkit 会让打包并作为单个可执行文件添加到 Windows 变得简单,但它似乎并没有,他们建议使用 https://github.com/evshiron/nwjs-buil
我觉得我错过了一些简单的东西。 我正在 nw.js 中开发一个“托盘”应用程序。为此,我将 "main" 设置为 package.json 中的 "main.js" 文件。在 main.js 中,我实
稍微简化一下,NW.js和Electron包含浏览器(Webkit,Chromium或其他)的一部分,并结合了JavaScript引擎(node.js,io.js或其他)。 我的问题是:里面有多少份V
在我的主脚本中: var renderer = require('./templates/renderTemplates.js'); function show(json){ renderer
我正在尝试使用 module.exports()在我的 NW.js 应用程序中创建一个新模块。 我有两个正在使用的文件: 索引.js const gkm = require('gkm'); //Thi
我很感兴趣,当我处于控制台模式时,如何在 emacs 中调整拆分窗口的大小? 我打开我的文件: emacs myfilename.txt -nw 现在,当我将窗口拆分为: C-x 2 或者 C-x 3
我的应用程序是使用占位符构建的,单击“加载”时会直接读取文件。 Load showthefile() 执行一些操作,然后调用... var keyMapLoc = '\\path\\to\\file.
我正在将 NW.js v0.12.3 迁移到新的 NW.js v0.17.3。在我的旧应用程序中,我曾经打开一个窗口来显示来电通知。如果用户接听电话或挂断电话,我会根据特殊的事件监听器关闭窗口。 这是
下面的代码可以使用F11热键,让浏览器窗口全屏,如何实现第二次按F11热键,恢复原来的窗口大小? nw.App.registerGlobalHotKey(new nw.Shortcut({
环境 NW.js v0.12.3(32 位) Windows 8 Webchimera.js (播放器)VLC 构建 (2.2.1) require-new 问题 新窗口从父窗口打开。 Webchim
我在使用 nw.js 时遇到了一些问题。我已经“谷歌化”了很多天(几周),但我找不到任何解决方案。因此,我使用 nw.js 作为客户端来连接到内部服务器。它的工作方式就像一个经典的网站。我们可以使用网
我正在使用 Node Webkit 创建桌面应用程序。我现在需要创建一个可执行文件,因此安装了以下文件:https://github.com/nwjs/nw-builder 我很难理解说明,尤其是命令
我需要从包围地面叠加层的矩形中获取 NW LatLng。使用 mOverlay.getBounds() 将使我在旋转之前得到我需要的点(getBounds 忽略旋转)。 这是地面叠加层,我需要的确切
讨论 NetWeaver 7.4 (CD261) 中新的 ABAP 编程功能的 SAP 官方演示文稿对表表达式进行了大量讨论,替换了从内部表读取的旧语法: READ TABLE lt_aufk INT
在我的 NW.js 应用程序中,我将一些数据存储在本地存储中。现在我想删除应用程序和本地存储数据。我将应用程序移至垃圾箱并清理它。此外,我删除了与位于 /Users//Library/Caches/
我是一名优秀的程序员,十分优秀!