-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
box2d-core on the server side #39
Comments
You can check how the CLI benchmark does it: https://github.com/Lusito/box2d.ts/blob/master/packages/benchmark/src/cli/index.ts import { performance } from "perf_hooks";
global.performance = performance as any; |
Sorry, I don't understand what should I change to fix it. I use JavaScript instead of TypeScript. |
Somewhere in your server-side code, add the import and the global.performance assignment. Just make sure, the assignment happens before you work with box2d. JavaScript version: import { performance } from "perf_hooks";
global.performance = performance; |
import { performance } from "perf_hooks";
global.performance = performance;
import { b2World } from "@box2d/core";
const world = b2World.Create({ x: 0, y: -9.8 });
console.log("ok");
|
Ah, I'm sorry. I forgot, that one timer gets created on top-level. Try this instead: Create a file "fixPerformance.js" (name it whatever you like) with the 2 code lines above, then import that file before you import |
Thank you very much! fix-performance.js import { performance } from "perf_hooks";
global.performance = performance; app.js import "./fix-performance.js";
import { b2World } from "@box2d/core";
const world = b2World.Create({ x: 0, y: -9.8 });
console.log(`gravity = ${world.GetGravity().y}`); Output: |
I have reopened this issue because I think the solution above should be added to the NPM package. |
Hi @8Observer8, sorry for the delay, life kept me busy. What exactly do you mean by adding it to the NPM package?
Solution 2 will work for everyone, but it still requires a manual import by you. Solution 3 is more convenient, but also might break in some bundling scenarios. |
I see that it is impossible. I just wanted to make it more user friendly. I mean user installs |
Maybe I wrote this a bit confusing.. Only the first of the 3 approaches above is impossible. The other two are possible, but each have their downsides. I was hoping you would tell me your opinion on the last 2 approaches. |
I don't understand 3) but 2) is better than now. I think it must be in the documentation here: https://lusito.github.io/box2d.ts/docs/guide/ on the left side panel, for example, the |
I just noticed, that I don't get the error anymore and checked: performance.now is globally available since Node 16, so it's no longer needed to have this fix. I wrote the fix when I was still using Node 12. Are you sure you still need this fix? I think we can drop support for Node 12 by now. |
It works! I have moved my example on the Glitch hosting: https://glitch.com/edit/#!/box2d-core-on-the-server-side-js import { b2World } from "@box2d/core";
const world = b2World.Create({ x: 0, y: -9.8 });
const gravity = world.GetGravity();
console.log(`gravity = (${gravity.x}, ${gravity.y})`); You can see an output result of the program if you press "LOGS" at the bottom: I have add the required Node.js (>=16) version to
|
Solution:
This problem was solved in the Node.js 16. I have moved my example on the Glitch hosting: https://glitch.com/edit/#!/box2d-core-on-the-server-side-js
You can see an output result of the program if you press "LOGS" at the bottom:
I have add the required Node.js version to
package.json
:Question:
I tried running
box2d-core
on the server side using Node.js:app.js
Error:
`
E:_Projects\Physics\box2d-core\server-side-box2dcore-webgl-js>nodemon src/server/app.js
[nodemon] 2.0.20
[nodemon] to restart at any time, enter rs
[nodemon] watching path(s): .
[nodemon] watching extensions: js,mjs,json
[nodemon] starting node src/server/app.js
E:_Projects\node_modules@box2d\core\dist\common\b2_timer.js:27
this.m_start = performance.now();
^
ReferenceError: performance is not defined
at new b2Timer (E:_Projects\node_modules@box2d\core\dist\common\b2_timer.js:27:24)
at Object. (E:_Projects\node_modules@box2d\core\dist\collision\b2_time_of_impact.js:230:32)
at Module._compile (internal/modules/cjs/loader.js:1072:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12)
at Module.require (internal/modules/cjs/loader.js:961:19)
at require (internal/modules/cjs/helpers.js:92:18)
at Object. (E:_Projects\node_modules@box2d\core\dist\index.js:46:14)
at Module._compile (internal/modules/cjs/loader.js:1072:14)
[nodemon] app crashed - waiting for file changes before starting...
`
The text was updated successfully, but these errors were encountered: