Skip to content

Commit f139c0d

Browse files
Dnouvd-gubert
andauthored
fix: deployment error when using packages using native node modules (#36967)
Co-authored-by: Douglas Gubert <[email protected]>
1 parent 050f1dc commit f139c0d

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

.changeset/big-fireants-leave.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@rocket.chat/apps-engine': patch
3+
'@rocket.chat/meteor': patch
4+
---
5+
6+
Fixes an issue where apps that import node native modules with the optional `node:` specifier would fail to construct

packages/apps-engine/deno-runtime/handlers/app/construct.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,25 @@ function prepareEnvironment() {
2626
// 2. To require external npm packages we may provide
2727
// 3. To require apps-engine files
2828
function buildRequire(): (module: string) => unknown {
29-
return (module: string): unknown => {
30-
if (ALLOWED_NATIVE_MODULES.includes(module)) {
31-
return require(`node:${module}`);
32-
}
29+
return (module: string): unknown => {
30+
// Normalize Node built-in specifiers: accept both 'crypto' and 'node:crypto'
31+
const normalized = module.replace('node:', '');
3332

34-
if (ALLOWED_EXTERNAL_MODULES.includes(module)) {
35-
return require(`npm:${module}`);
36-
}
33+
if (ALLOWED_NATIVE_MODULES.includes(normalized)) {
34+
return require(`node:${normalized}`);
35+
}
3736

38-
if (module.startsWith('@rocket.chat/apps-engine')) {
39-
// Our `require` function knows how to handle these
40-
return require(module);
41-
}
37+
if (ALLOWED_EXTERNAL_MODULES.includes(module)) {
38+
return require(`npm:${module}`);
39+
}
4240

43-
throw new Error(`Module ${module} is not allowed`);
44-
};
41+
if (module.startsWith('@rocket.chat/apps-engine')) {
42+
// Our `require` function knows how to handle these
43+
return require(module);
44+
}
45+
46+
throw new Error(`Module ${module} is not allowed`);
47+
};
4548
}
4649

4750
function wrapAppCode(code: string): (require: (module: string) => unknown) => Promise<Record<string, unknown>> {

0 commit comments

Comments
 (0)