# New build system in our main repository

**URL:** <https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483>\
**Category:** Announcements\
**Created:** [March 16, 2022, 8:05pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483 "2022-03-16T20:05:59Z")\
**Posts on this page:** 15\
**Page:** 4

<div class="post-metadata">

**Author:** ![Pryme8](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/pryme8/32/7212_2.png) [@Pryme8](https://forum.babylonjs.com/u/Pryme8)\
**Post date:** [April 21, 2022, 9:05pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/63 "2022-04-21T21:05:10Z")

</div>

When I try to do the `npm i` step this error keeps dropping:

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/c/7/c73153a56dc62b4f28eb0fb69336e2c473fdd500.png)

My master branch is up to date with the upstream and I followed all prior steps to the install run.

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [April 21, 2022, 9:13pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/64 "2022-04-21T21:13:58Z")

</div>

make sure you are on node 16  
(I use nvm to easily switch)

---

<div class="post-metadata">

**Author:** ![Pryme8](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/pryme8/32/7212_2.png) [@Pryme8](https://forum.babylonjs.com/u/Pryme8)\
**Post date:** [April 21, 2022, 9:16pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/65 "2022-04-21T21:16:53Z")

</div>

I was using 14.15.5 so that might be it.

**Update**  
Looks to be it. Should the docs say 16 and up instead of 14 then maybe?

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [April 21, 2022, 9:30pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/66 "2022-04-21T21:30:05Z")

</div>

good point. CC @RaananW

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [April 25, 2022, 1:20pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/67 "2022-04-25T13:20:30Z")

</div>

This is probably an npm version issue and not a node issue. we support npm 7+ (better - 8+). I am glad node 16 worked for you (i assume - because it comes with npm 8). If you could try updating your npm on node 14 and give it a try it would be great.

I am testing with both node 14 and 16 (and honestly keep on forgetting wehat version I am currently using ;-)). I’ll test it again to be sure.

---

<div class="post-metadata">

**Author:** ![Pryme8](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/pryme8/32/7212_2.png) [@Pryme8](https://forum.babylonjs.com/u/Pryme8)\
**Post date:** [May 2, 2022, 4:10pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/68 "2022-05-02T16:10:21Z")

</div>

So I have been trying to run a local playground so I can test the nine patch fixes. When I run

`npm run serve -w @tools/babylon-server`  
everything is fine until this finishes:

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/4/7/47008df17a1758a20ca56d66a254bf848948afe0.png)

Once that gets to a certain point the playground stops working and I get a bunch of compiler errors.

```auto
ERROR in ./src/sceneJs.js 3:0-44
Module not found: Error: Can't resolve './createScene' in 'F:\gitHUB\Babylon.js\packages\tools\babylonServer\src'
resolve './createScene' in 'F:\gitHUB\Babylon.js\packages\tools\babylonServer\src'
  using description file: F:\gitHUB\Babylon.js\packages\tools\babylonServer\package.json (relative path: ./src)
    Field 'browser' doesn't contain a valid alias configuration
    using description file: F:\gitHUB\Babylon.js\packages\tools\babylonServer\package.json (relative path: ./src/createScene)
      no extension
        Field 'browser' doesn't contain a valid alias configuration
        F:\gitHUB\Babylon.js\packages\tools\babylonServer\src\createScene doesn't exist
      .js
        Field 'browser' doesn't contain a valid alias configuration
        F:\gitHUB\Babylon.js\packages\tools\babylonServer\src\createScene.js doesn't exist
      .ts
        Field 'browser' doesn't contain a valid alias configuration
        F:\gitHUB\Babylon.js\packages\tools\babylonServer\src\createScene.ts doesn't exist
      .tsx
        Field 'browser' doesn't contain a valid alias configuration
        F:\gitHUB\Babylon.js\packages\tools\babylonServer\src\createScene.tsx doesn't exist
      as directory
        F:\gitHUB\Babylon.js\packages\tools\babylonServer\src\createScene doesn't exist

ERROR in ./src/sceneJs.js 4:0-46
Module not found: Error: Can't resolve './createEngine' in 'F:\gitHUB\Babylon.js\packages\tools\babylonServer\src'
resolve './createEngine' in 'F:\gitHUB\Babylon.js\packages\tools\babylonServer\src'
  using description file: F:\gitHUB\Babylon.js\packages\tools\babylonServer\package.json (relative path: ./src)
    Field 'browser' doesn't contain a valid alias configuration
    using description file: F:\gitHUB\Babylon.js\packages\tools\babylonServer\package.json (relative path: ./src/createEngine)
      no extension
        Field 'browser' doesn't contain a valid alias configuration
        F:\gitHUB\Babylon.js\packages\tools\babylonServer\src\createEngine doesn't exist
      .js
        Field 'browser' doesn't contain a valid alias configuration
        F:\gitHUB\Babylon.js\packages\tools\babylonServer\src\createEngine.js doesn't exist
      .ts
        Field 'browser' doesn't contain a valid alias configuration
        F:\gitHUB\Babylon.js\packages\tools\babylonServer\src\createEngine.ts doesn't exist
      .tsx
        Field 'browser' doesn't contain a valid alias configuration
        F:\gitHUB\Babylon.js\packages\tools\babylonServer\src\createEngine.tsx doesn't exist
      as directory
        F:\gitHUB\Babylon.js\packages\tools\babylonServer\src\createEngine doesn't exist

webpack 5.70.0 compiled with 2 errors in 100024 ms

```

Sometimes restarting the server fixes it, but it soon returns to this state even without me doing anything.

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/9/b/9bbb0190bac82cb87b66f2302f0b5a4edc18181b.png)

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [May 2, 2022, 5:04pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/69 "2022-05-02T17:04:39Z")

</div>

can you run `npm run prepare -w @tools/babylon-server` ? You are missing the two auto-generated files, and it seems like the prepare script didn’t run correctly on your device

---

<div class="post-metadata">

**Author:** ![Dok11](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/dok11/32/25754_2.png) [@Dok11](https://forum.babylonjs.com/u/Dok11)\
**Post date:** [June 5, 2023, 6:44pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/70 "2023-06-05T18:44:25Z")

</div>

Continue from [ShaderCodeCursor. Optimization of lines parsing by Dok11 · Pull Request #13935 · BabylonJS/Babylon.js · GitHub](https://github.com/BabylonJS/Babylon.js/pull/13935#issuecomment-1576417335)  
I have npm v. 9.5.1 and node v. 19.8.1, I have described above troubles even after your commands:

```auto
$ npm run test:visualization

> @babylonjs/root@1.0.0 test:visualization
> jest --selectProjects=visualization --runInBand

Running one project: visualization
ts-jest[config] (WARN) message TS151001: If you have issues related to imports, you should consider setting `esModuleInterop` to `true` in your TypeScript configuration file (usually `tsconfig.json`). See https://blogs.msdn.microsoft.com/typescript/2018/01/31/announcing-typ
escript-2-7/#easier-ecmascript-module-interoperability for more information.
 FAIL visualization packages/tools/tests/test/visualization/visualization.webgl2.test.ts
  ● Test suite failed to run

    Unable to find native addon file "C:\OSPanel\domains\Babylon.js\node_modules\node-libpng\node-libpng-win32-x64-111.node".

      at Object.<anonymous> (node_modules/node-libpng/src/native.ts:8:11)
      at Object.<anonymous> (node_modules/node-libpng/src/encode.ts:2:1)

 FAIL visualization packages/tools/tests/test/visualization/visualization.webgpu.test.ts
  ● Test suite failed to run

    Unable to find native addon file "C:\OSPanel\domains\Babylon.js\node_modules\node-libpng\node-libpng-win32-x64-111.node".

      at Object.<anonymous> (node_modules/node-libpng/src/native.ts:8:11)
      at Object.<anonymous> (node_modules/node-libpng/src/encode.ts:2:1)

 FAIL visualization packages/tools/tests/test/visualization/visualization.webgl1.test.ts
  ● Test suite failed to run

    Unable to find native addon file "C:\OSPanel\domains\Babylon.js\node_modules\node-libpng\node-libpng-win32-x64-111.node".

      at Object.<anonymous> (node_modules/node-libpng/src/native.ts:8:11)
      at Object.<anonymous> (node_modules/node-libpng/src/encode.ts:2:1)

Test Suites: 3 failed, 3 total
Tests: 0 total
Snapshots: 0 total
Time: 0.828 s
Ran all test suites.

```

node\_modules is  
 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/7/c/7c092250bf0a2cba15c122f765574e55814dfdf7.png)

Is there any decision for now?

I tried to uninstall this package and install `@latest`, but it fails:

```auto
$ npm install node-libpng@latest
npm WARN cleanup Failed to remove some directories [
npm WARN cleanup [
npm WARN cleanup 'C:\\OSPanel\\domains\\Babylon.js\\node_modules\\node-libpng',
npm WARN cleanup [Error: EPERM: operation not permitted, rmdir 'C:\OSPanel\domains\Babylon.js\node_modules\node-libpng\src'] {
npm WARN cleanup errno: -4048,
npm WARN cleanup code: 'EPERM',
npm WARN cleanup syscall: 'rmdir',
npm WARN cleanup path: 'C:\\OSPanel\\domains\\Babylon.js\\node_modules\\node-libpng\\src'
npm WARN cleanup }
npm WARN cleanup ]
npm WARN cleanup ]
npm ERR! code 1
npm ERR! path C:\OSPanel\domains\Babylon.js\node_modules\node-libpng
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node scripts/install.js
npm ERR! Downloading node-libpng prebuilt binary from "https://github.com/Prior99/node-libpng/releases/download/0.2.20/node-libpng-win32-x64-111.node".
npm ERR! C:\OSPanel\domains\Babylon.js\node_modules\node-libpng\scripts\install.js:30
npm ERR! throw new Error(`No supported node-libpng ${packageVersion} build found for node ${process.version} on ${process.platform} (${process.arch}).`);
npm ERR! ^
npm ERR!
npm ERR! Error: No supported node-libpng 0.2.20 build found for node v19.8.1 on win32 (x64).

```

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [June 5, 2023, 7:31pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/71 "2023-06-05T19:31:16Z")

</div>

> [@Dok11](#):
>
> `node-libpng`

node-libpng seems to be the issue:

> **[node-libpng](https://www.npmjs.com/package/node-libpng)**
>
> Unofficial bindings for node to libpng.. Latest version: 0.2.20, last published: 2 years ago. Start using node-libpng in your project by running \`npm i node-libpng\`. There are 4 other projects in the npm registry using node-libpng.

I’ll add a task to find a replacement asap

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [June 5, 2023, 7:31pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/72 "2023-06-05T19:31:23Z")

</div>



---

<div class="post-metadata">

**Author:** ![jeremy-coleman](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/jeremy-coleman/32/15493_2.png) [@jeremy-coleman](https://forum.babylonjs.com/u/jeremy-coleman)\
**Post date:** [June 5, 2023, 10:15pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/73 "2023-06-05T22:15:21Z")

</div>

if you use a hard coded version for node addons, it almost always fails. you can normally use “\*” as the version number to make it work.

dok11, the eperm thing is just a consequence of some external program writing to your fs not running under node, on windows you can just use shift + delete on the folder to delete it (and not send to trash, just perma delete)

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [June 6, 2023, 10:32am UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/74 "2023-06-06T10:32:25Z")

</div>

> [@jeremy-coleman](#):
>
> if you use a hard coded version for node addons, it almost always fails. you can normally use “\*” as the version number to make it work.

what a wonderful way to get your build system to sporadically fail 🙂 . Not to mention the security implications of that. There is a good reason not to do that on a large scale project.

In this case, however, I will need to find a different binding or a whole different library, as it is only available until node 16. has nothing to do with a fixed version of anything. The developers simply stopped providing bindings. i’ll keep you all updated.

---

<div class="post-metadata">

**Author:** ![jeremy-coleman](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/jeremy-coleman/32/15493_2.png) [@jeremy-coleman](https://forum.babylonjs.com/u/jeremy-coleman)\
**Post date:** [June 6, 2023, 12:32pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/75 "2023-06-06T12:32:39Z")

</div>

No different than using ^

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [June 6, 2023, 12:47pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/76 "2023-06-06T12:47:32Z")

</div>

yes and no. We maintain backwards compatibility. Anyhow, it wouldn’t have helped here.

Working on a fix now

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [June 27, 2023, 3:06pm UTC](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483/77 "2023-06-27T15:06:26Z")

</div>



[Previous page](https://forum.babylonjs.com/t/new-build-system-in-our-main-repository/28483.md?page=3)
