sveltejs / kit

web development, streamlined
https://kit.svelte.dev
MIT License
18.12k stars 1.84k forks source link

ReferenceError: exports is not defined #10894

Closed ziedHamdi closed 8 months ago

ziedHamdi commented 8 months ago

Describe the bug

I'm trying to connect two libraries I wrote: one as a backend library and one for the svelete frontend.

When trying with the backend library locally (pnpm link) I get the error

8:56:23 PM [vite] Error when evaluating SSR module /@fs/C:/Users/zhamd/work/UserCredits/dist/index.js:
|- ReferenceError: exports is not defined
    at C:\Users\zhamd\work\UserCredits\dist\index.js:16:23
    at instantiateModule (file:///C:/Users/zhamd/work/svelte-user-credits/node_modules/.pnpm/vite@4.5.0_@types+node@20.8.7/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:56052:15)

I don't know if is interesting here, this is the code of index.js:

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PaymentService = exports.MongooseStripeContainerSingleton = exports.StripeClient = exports.EnvConfigReader = exports.MongooseDaoFactory = exports.connectToDb = void 0;
__exportStar(require("./db/dao"), exports);
__exportStar(require("./db/model"), exports);
__exportStar(require("./errors"), exports);
var connection_1 = require("./impl/mongoose/connection");
Object.defineProperty(exports, "connectToDb", { enumerable: true, get: function () { return connection_1.connectToDb; } });
var MongooseDaoFactory_1 = require("./impl/mongoose/dao/MongooseDaoFactory");
Object.defineProperty(exports, "MongooseDaoFactory", { enumerable: true, get: function () { return MongooseDaoFactory_1.MongooseDaoFactory; } });
var EnvConfigReader_1 = require("./impl/service/EnvConfigReader");
Object.defineProperty(exports, "EnvConfigReader", { enumerable: true, get: function () { return EnvConfigReader_1.EnvConfigReader; } });
var StripeClient_1 = require("./impl/service/StripeClient");
Object.defineProperty(exports, "StripeClient", { enumerable: true, get: function () { return StripeClient_1.StripeClient; } });
var MongooseStripeInit_1 = require("./MongooseStripeInit");
Object.defineProperty(exports, "MongooseStripeContainerSingleton", { enumerable: true, get: function () { return MongooseStripeInit_1.MongooseStripeContainerSingleton; } });
__exportStar(require("./service"), exports);
var PaymentService_1 = require("./service/PaymentService");
Object.defineProperty(exports, "PaymentService", { enumerable: true, get: function () { return PaymentService_1.PaymentService; } });

If I unlink my library and add it from npm, I get the error:

Failed to resolve entry for package "user-credits". The package may have incorrect main/module/exports specified in its package.json.

I tried every solution on the web but none worked for me for both these cases.

Reproduction

For the error

Failed to resolve entry for package "user-credits". The package may have incorrect main/module/exports specified in its package.json. Clone: https://github.com/ziedHamdi/svelte-user-credits.git

Add user-credits and try to run the project: pnpm add user-credits pnpm dev

For the error:

ReferenceError: exports is not defined

Clone the backend lib: https://github.com/ziedHamdi/UserCredits.git Clone: https://github.com/ziedHamdi/svelte-user-credits.git

Go to the first directory and link the lib as a global dependency, then use it in the second:

user-credits> pnpm link . --global
svelte-user-credits> pnpm link -g user-credits

Logs

Error: Failed to resolve entry for package "user-credits". The package may have incorrect main/module/exports specified in its package.json.
    at packageEntryFailure (file:///C:/Users/zhamd/work/svelte-user-credits/node_modules/.pnpm/vite@4.5.0_@types+node@20.8.7/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:28725:11)
    at resolvePackageEntry (file:///C:/Users/zhamd/work/svelte-user-credits/node_modules/.pnpm/vite@4.5.0_@types+node@20.8.7/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:28722:5)
    at tryNodeResolve (file:///C:/Users/zhamd/work/svelte-user-credits/node_modules/.pnpm/vite@4.5.0_@types+node@20.8.7/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:28453:20)
    at Context.resolveId (file:///C:/Users/zhamd/work/svelte-user-credits/node_modules/.pnpm/vite@4.5.0_@types+node@20.8.7/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:28212:28)
    at Object.resolveId (file:///C:/Users/zhamd/work/svelte-user-credits/node_modules/.pnpm/vite@4.5.0_@types+node@20.8.7/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:44276:64)
    at async TransformContext.resolve (file:///C:/Users/zhamd/work/svelte-user-credits/node_modules/.pnpm/vite@4.5.0_@types+node@20.8.7/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:43992:23)
    at async normalizeUrl (file:///C:/Users/zhamd/work/svelte-user-credits/node_modules/.pnpm/vite@4.5.0_@types+node@20.8.7/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:41836:34)
    at async file:///C:/Users/zhamd/work/svelte-user-credits/node_modules/.pnpm/vite@4.5.0_@types+node@20.8.7/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:41998:47
    at async Promise.all (index 1)
    at async TransformContext.transform (file:///C:/Users/zhamd/work/svelte-user-credits/node_modules/.pnpm/vite@4.5.0_@types+node@20.8.7/node_modules/vite/dist/node/chunks/dep-bb8a8339.js:41914:13) {
  plugin: 'vite:import-analysis',
  id: 'C:/Users/zhamd/work/svelte-user-credits/src/lib/example/Resolver.ts',
  pluginCode: 'import { IResourceDomain, IResourceResolver, IRestrictedPresentationProperties } from "../ioc/IResourceResolver";\n' +
    'import { IOffer } from "user-credits";\n' +
    'import { OfferProps } from "./impl/model/OfferProps";\n' +
    'export class Resolver {\n' +
    '  getObject(domain, data) {\n' +
    '    switch (domain.type) {\n' +
    '      case "Offer":\n' +
    '        return new OfferProps(data);\n' +
    '    }\n' +
    '  }\n' +
    '}\n'
}

System Info

System:
    OS: Windows 10 10.0.19045
    CPU: (8) x64 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
    Memory: 19.38 GB / 31.90 GB
  Binaries:
    Node: 18.16.0 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.19 - ~\AppData\Roaming\npm\yarn.CMD
    npm: 9.5.1 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: Spartan (44.19041.3570.0), Chromium (118.0.2088.57)
    Internet Explorer: 11.0.19041.3570
  npmPackages:
    @sveltejs/adapter-auto: ^2.0.0 => 2.1.0
    @sveltejs/adapter-node: 1.3.1 => 1.3.1
    @sveltejs/kit: ^1.26.0 => 1.26.0
    svelte: ^4.0.5 => 4.2.1
    vite: ^4.4.2 => 4.5.0

Severity

blocking all usage of SvelteKit

Additional Information

No response

ziedHamdi commented 8 months ago

I must say, I have no idea of how the vite compiler works, so I tried the solutions on the web as is: changing tsconfig in different ways, removing type:module from package.json, adding inlining in vite.config.js deps: { inline: ['user-credits'], },

But it's all obscure navigation for me, I don't understand what I'm doing by doing that as I'm new to sveltekit, vite and even TS

ziedHamdi commented 8 months ago

I solved the issue, it is the first time I published an npm, so I didn't know I had to add a files section in package.json