Reputation: 7852
I am creating a full-stack monorepo project using lerna.
In one of the sub-project I got Cannot find module '@gepick/database/connect'
.
my lerna.json
{
"packages": ["packages/*", "projects/**"],
"version": "0.0.0",
"useWorkspaces": true,
"npmClient": "yarn"
}
my gepick/database/package.json:
{
"name": "@gepick/database",
"version": "1.0.0",
"devDependencies": {
"@types/lodash": "^4.14.149",
"@types/mongoose": "^5.7.11",
"source-map-loader": "^0.2.4"
},
"dependencies": {
"lodash": "^4.17.15",
"mongodb-client-encryption": "^1.0.1",
"mongoose": "^5.9.9"
}
}
node based subproject package.json
{
"name": "scripts-api-football",
"version": "1.0.0",
"scripts": {
"start:collectDayMatches:dev": "tsc-watch --onSuccess \"node -r source-map-support/register build/collectDayMatches.js\"",
"build": "tsc"
},
"devDependencies": {
"@types/lodash": "^4.14.149",
"source-map-loader": "^0.2.4",
"source-map-support": "^0.5.19",
"tsc-watch": "^4.2.3"
},
"dependencies": {
"@gepick/database": "^1.0.0",
"axios": "^0.19.2",
"commander": "^5.0.0",
"lodash": "^4.17.15",
"nodemon": "^2.0.3"
}
}
node based subproject tsconfig.json
{
"compilerOptions": {
"target": "es2019",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist",
"strict": true,
"inlineSourceMap": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"strictNullChecks": true,
"noImplicitThis": true,
"alwaysStrict": true,
"allowJs": false,
"lib": ["es2016", "esnext.asynciterable", "webworker"],
"types": ["node"],
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strictPropertyInitialization": false,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"forceConsistentCasingInFileNames": true,
"baseUrl": "./src",
"paths": {
"utils/*": ["./utils/*"]
}
},
"exclude": ["tests", "tasks"]
}
main package.json:
{
"name": "gepick-lerna",
"version": "1.0.0",
"private": true,
"main": "index.js",
"license": "MIT",
"scripts": {
"start:front-web": "lerna run start --scope front-web --stream",
"bootstrap": "lerna bootstrap",
"build:scripts:api-football": "lerna run build --scope scripts-api-football --stream",
"start:scripts:api-football:start:collectDayMatches:dev": "lerna run start:collectDayMatches:dev --stream"
},
"dependencies": {
"lerna": "^3.20.2",
"typescript": "^3.8.3",
"webpack": "^4.42.1"
},
"workspaces": [
"projects/**",
"packages/*"
],
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^2.27.0",
"@typescript-eslint/parser": "^2.27.0",
"eslint": "^6.8.0",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.19.0",
"eslint-plugin-react-hooks": "^2.5.1"
}
}
Also, I tried to add main: "connect.js"
to @gepick/datebase
package.json file. But looks like @gepick/datebase
package don`t have compiled js. Maybe it is issue (tsc not compiles library files) ?
Upvotes: 1
Views: 3113
Reputation: 7852
Problem was that packages were not compiled to js. I changed node
to ts-node
for run script. Now it works.
Upvotes: 1