refined-city-47392
06/14/2022, 5:58 AMimport { GrowthBook } from "@growthbook/growthbook";
^^^^^^^^^^
SyntaxError: Named export 'GrowthBook' not found. The requested module '@growthbook/growthbook' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export, for example using:
import pkg from '@growthbook/growthbook';
const { GrowthBook } = pkg;
My IDE (Vscode) has no problem loading the sdk as an ES6 module. No other libs are causing any issues loading them with import. Just to humor node, I tried the suggestion and got the following error:
(node:20837) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
/Users/xxxx/node_modules/@growthbook/growthbook/dist/esm/index.js:1
export { GrowthBook } from "./GrowthBook";
^^^^^^
SyntaxError: Unexpected token 'export'
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1033:15)
at Module._compile (node:internal/modules/cjs/loader:1069:27)
at Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Module._load (node:internal/modules/cjs/loader:827:12)
at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:170:29)
at ModuleJob.run (node:internal/modules/esm/module_job:198:25)
at async Promise.all (index 0)
at async ESMLoader.import (node:internal/modules/esm/loader:409:24)
My tsconfig.json is as follows
{
"compilerOptions": {
"target": "ES2022",
"module": "es6",
"lib": [
"ES2022",
"dom"
],
"moduleResolution": "node",
"rootDir": ".",
"outDir": "build",
"allowSyntheticDefaultImports": true,
"importHelpers": true,
"alwaysStrict": true,
"sourceMap": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitAny": false,
"noImplicitThis": false,
"strictNullChecks": false
},
"include": [
"src/**/*",
"__tests__/**/*"
]
}
Versions:
• `node`: 18.3.0
• `@growthbook/growthbook`: 0.18.0
• `tsc`: 4.7.2
Cmd to build is tsc -p tsconfig.json
Cmd to run node build/src/main.js
I spent a good deal of time yesterday trying to figure out the issue but to no avail. Any ideas/suggestions are much appreciated!fresh-football-47124
refined-city-47392
06/14/2022, 7:38 AM{
"name": "node-typescript-boilerplate",
"version": "0.0.0",
"description": "Minimalistic boilerplate to quick-start Node.js development in TypeScript.",
"type": "module",
"devDependencies": {
"@types/jest": "~27.5",
"@types/node": "~16",
"@typescript-eslint/eslint-plugin": "~5.26",
"@typescript-eslint/parser": "~5.26",
"eslint": "~8.16",
"eslint-config-prettier": "~8.5",
"eslint-plugin-jest": "~26.2",
"jest": "~28.1",
"prettier": "~2.6",
"rimraf": "~3.0",
"ts-jest": "~28.0",
"tsutils": "~3.21",
"typescript": "~4.7"
},
"scripts": {
"start": "node build/src/main.js",
"clean": "rimraf coverage build tmp",
"prebuild": "npm run lint",
"build": "tsc -p tsconfig.json",
"build:watch": "tsc -w -p tsconfig.json",
"build:release": "npm run clean && tsc -p tsconfig.release.json",
"lint": "eslint . --ext .ts --ext .mts",
"test": "jest --coverage",
"prettier": "prettier --config .prettierrc --write .",
"test:watch": "jest --watch"
},
"author": "Jakub Synowiec <jsynowiec@users.noreply.github.com>",
"license": "Apache-2.0",
"dependencies": {
"@growthbook/growthbook": "^0.18.0",
"@sentry/node": "^7.1.1",
"@sentry/tracing": "^7.1.1",
"@types/amqplib": "^0.8.2",
"@types/json-diff": "^0.7.0",
"@types/pg": "^8.6.5",
"amqplib": "^0.10.0",
"envalid": "^7.3.1",
"json-diff": "^0.9.0",
"pg": "^8.7.3",
"tslib": "~2.4",
"uuid": "^8.3.2"
},
"volta": {
"node": "18.3.0"
}
}
fresh-football-47124
refined-city-47392
06/14/2022, 7:42 AMfresh-football-47124
refined-city-47392
06/14/2022, 7:48 AMfresh-football-47124
future-teacher-7046
@growthbook/growthbook/dist/esm
refined-city-47392
06/14/2022, 11:28 AMnode:internal/errors:466
ErrorCaptureStackTrace(err);
^
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './dist/esm' is not defined by "exports" in /Users/xxx/node_modules/@growthbook/growthbook/package.json imported from /Users/xxx/build/src/main.js
at new NodeError (node:internal/errors:377:5)
at throwExportsNotFound (node:internal/modules/esm/resolve:440:9)
at packageExportsResolve (node:internal/modules/esm/resolve:719:3)
at packageResolve (node:internal/modules/esm/resolve:893:14)
at moduleResolve (node:internal/modules/esm/resolve:959:20)
at defaultResolve (node:internal/modules/esm/resolve:1174:11)
at ESMLoader.resolve (node:internal/modules/esm/loader:605:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:318:18)
at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:80:40)
at link (node:internal/modules/esm/module_job:78:36) {
code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}
future-teacher-7046
node_modules/@growthbook/growthbook/package.json
and add "type": "module",
that might work.
I know Typescript 4.7 changed a bunch of stuff when it comes to esm with node. I'll also check to see how @sentry/node
is doing things since that seems to be working for you.future-teacher-7046
exports
block in our package.json
and sentry does not.refined-city-47392
06/14/2022, 11:50 AMnode:internal/errors:466
ErrorCaptureStackTrace(err);
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/xxx/node_modules/@growthbook/growthbook/dist/esm/GrowthBook' imported from /Users/xxx/node_modules/@growthbook/growthbook/dist/esm/index.js
However, when I started checking that code, I saw that .js
was missing from the import path in the following places:
node_modules/@growthbook/growthbook/dist/esm/index.js
-> missing in export { GrowthBook } from "./GrowthBook";
node_modules/@growthbook/growthbook/dist/esm/GrowthBook.js
-> missing in util
and mongrule
import
By adding .js to those three places (combined with adding "type" : "module"
to package.json) it started up just fine!future-teacher-7046
refined-city-47392
06/14/2022, 12:03 PMrefined-city-47392
06/17/2022, 11:17 AMfuture-teacher-7046
ambitious-crowd-69774
07/22/2022, 4:06 AMrefined-city-47392
07/22/2022, 2:40 PMambitious-crowd-69774
07/22/2022, 2:57 PMrefined-city-47392
07/22/2022, 3:24 PMdazzling-address-78247
10/19/2022, 2:15 PMfresh-football-47124
dazzling-address-78247
10/19/2022, 4:34 PM$ node -v
v16.14.0
dazzling-address-78247
10/19/2022, 4:37 PMrefined-city-47392
10/19/2022, 4:47 PMdazzling-address-78247
10/19/2022, 5:05 PMadorable-minister-56906
02/15/2024, 9:27 AMimport { createRequire } from "module";
const require = createRequire(import.meta.url);
const { GrowthBook } = require("@growthbook/growthbook");
Open source platform for stress free deployments, measured impact, and smarter decisions.
Powered by