我正在编写一个应用程序,它使用两个似乎相互冲突的组件。
liquidfun.js和node.js/NW.js
我正在用液体模拟流体。我在NW.js中使用NW.js()设置窗口缩放级别。每一种都不起作用。
以下是我同时运行这两个程序时的错误。
Uncaught ReferenceError: module is not defined liquidfun.js:3
Uncaught TypeError: undefined is not a function liquidfun.js:1443我怀疑节点具有一些函数属性,它可以将名称“模块”与液态库中的某个东西共享。
如何防止NW.js处理液态脚本?
其他信息:
页面是从同一台计算机上的xampp服务器提供的,所以我必须使用“节点-远程”来设置缩放级别。
编辑:
由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"
}其结果是原文章中提到的模块错误。当节点-遥控器被删除,液体乐趣报告成功加载。如果没有节点远程,还有另一个错误。
UncaughtReferenceError: require is not defined (program):1 发布于 2016-01-12 16:54:10
问题是,液化乐趣首先评估它正在运行的环境,并且由于定义了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>现在,虽然在几乎所有情况下都可以这样做,但在这种情况下,这一点也不会有帮助,因为液化乐趣似乎并不是导出必要的类(我不熟悉这个库,因此可能会有这样的方法)。在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 )是欺骗库在常规web模式下运行。您可以通过替换第一行中的此位来完成这一任务:
...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>不用说,这两种解决方案都有点“烦琐”,也不太理想。
https://stackoverflow.com/questions/34745386
复制相似问题