contentful / contentful-sdk-core

Core modules for the Contentful JS SDKs
MIT License
22 stars 20 forks source link

'platform' is not exported by node-resolve:empty.js #120

Closed jesperp closed 3 years ago

jesperp commented 3 years ago

Hi, When setting up a simple browser based project with snowpack (probably rollup as well). Importing contentful (import {createClient} from 'contentful') generates the following error:

[snowpack] ! installing dependencies...
[snowpack] Failed to load node_modules/.pnpm/contentful-sdk-core@6.7.0/node_modules/contentful-sdk-core/dist/index.es-modules.js
  'platform' is not exported by node-resolve:empty.js, imported by node_modules/.pnpm/contentful-sdk-core@6.7.0/node_modules/contentful-sdk-core/dist/index.es-modules.js
[snowpack] Install failed.

Main tools used: Svelte, typescript, Snowpack

I have solved this simply by editing the file in question as suggested here: https://github.com/snowpackjs/snowpack/discussions/1387#discussioncomment-117946

# file: node_modules/.pnpm/contentful-sdk-core@6.7.0/node_modules/contentful-sdk-core/dist/index.es-modules.js
- import { platform, release } from 'os';
+ import os from 'os';

But it would of course be nice if this was fixed by contentful!

Steps to reproduce

npx create-snowpack-app myproject --template @snowpack/app-template-svelte-typescript
cd myproject
npm i contentful
# edit src/App.svelte and add import 'contentful' inside <script> tag
npm start
KrisStadler commented 3 years ago

Still getting this error when using Contentful JS version 8.3.6

KrisStadler commented 3 years ago

@luizfonseca Thank you for the assistance! What's the timeline for getting this PR merged?

luizfonseca commented 3 years ago

@KrisStadler We need to test if the branch has any regressions not captured by the tests since this is used by other SDKs

angelmeraz commented 3 years ago

Same issue happens with SvelteKit which uses Vite:

sveltekit % npm run dev --

> ~TODO~@0.0.1 dev /Users/***/dev/sveltekit
> svelte-kit dev

  SvelteKit v1.0.0-next.109

  local:   http://localhost:5000
  network: not exposed

  Use --host to expose server to other devices on this network

10:12:55 [vite] new dependencies found: contentful, updating...
 > node_modules/contentful-sdk-core/dist/index.es-modules.js:3:9: error: No matching export in "browser-external:os" for import "platform"
    3 │ import { platform, release } from 'os';
      ╵          ~~~~~~~~

 > node_modules/contentful-sdk-core/dist/index.es-modules.js:3:19: error: No matching export in "browser-external:os" for import "release"
    3 │ import { platform, release } from 'os';
      ╵                    ~~~~~~~

10:12:55 [vite] error while updating dependencies:
Error: Build failed with 2 errors:
node_modules/contentful-sdk-core/dist/index.es-modules.js:3:9: error: No matching export in "browser-external:os" for import "platform"
node_modules/contentful-sdk-core/dist/index.es-modules.js:3:19: error: No matching export in "browser-external:os" for import "release"
    at failureErrorWithLog (/Users/angel.meraz/dev/sveltekit/node_modules/esbuild/lib/main.js:1443:15)
    at /Users/angel.meraz/dev/sveltekit/node_modules/esbuild/lib/main.js:1125:28
    at runOnEndCallbacks (/Users/angel.meraz/dev/sveltekit/node_modules/esbuild/lib/main.js:915:63)
    at buildResponseToResult (/Users/angel.meraz/dev/sveltekit/node_modules/esbuild/lib/main.js:1123:7)
    at /Users/angel.meraz/dev/sveltekit/node_modules/esbuild/lib/main.js:1230:14
    at /Users/angel.meraz/dev/sveltekit/node_modules/esbuild/lib/main.js:606:9
    at handleIncomingPacket (/Users/angel.meraz/dev/sveltekit/node_modules/esbuild/lib/main.js:703:9)
    at Socket.readFromStdout (/Users/angel.meraz/dev/sveltekit/node_modules/esbuild/lib/main.js:573:7)
    at Socket.emit (events.js:315:20)
    at Socket.EventEmitter.emit (domain.js:467:12)

However it does work by updating contentful-sdk-core/dist/index.es-modules.js as suggested by @jesperp

luizfonseca commented 3 years ago

@KrisStadler @angelmeraz could you let me know if my branch fixes the issue? https://github.com/contentful/contentful-sdk-core/pull/161

you can replace it in your package.json:

"contentful-sdk-core": "git://github.com/contentful/contentful-sdk-core.git#fix\/os-error"

Edit: fixed the package git url

KrisStadler commented 3 years ago

@luizfonseca I'll take a look at it. I Will post feedback soon

angelmeraz commented 3 years ago

@luizfonseca I gave this a try and got the following error:


> sveltekit-contentful-app@0.0.1 dev /Users/******/dev/sveltekit-contentful-app
> svelte-kit dev

  SvelteKit v1.0.0-next.109

  local:   http://localhost:3000
  network: not exposed

  Use --host to expose server to other devices on this network

10:35:23 [vite] hmr update /src/routes/index.svelte
10:35:28 [vite] new dependencies found: contentful, updating...
 > node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
    32580 │         throw new Error(`Failed to resolve entry for package "${id}". ` +
          ╵               ^
    at resolvePackageEntry (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:15)
    at tryNodeResolve (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32399:11)
    at Context.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32282:28)
    at Object.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:44228:55)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:69926:27
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64628:34
    at async callback (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:809:28)
    at async handleRequest (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:641:30)

   node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:18: note: This error came from the "onResolve" callback registered here
    64615 │             build.onResolve({ filter: /^[\w@][^:]/ }, async ({ path: id, importer, kind, resolveDir }) => {
          ╵                   ~~~~~~~~~
    at setup (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:19)
    at handlePlugins (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:733:23)
    at Object.buildOrServe (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1018:7)
    at /Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1742:17
    at new Promise (<anonymous>)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1741:14)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1617:51)
    at optimizeDeps (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64842:34)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

   node_modules/contentful/dist/es-modules/contentful.js:10:33: note: The plugin "vite:dep-pre-bundle" was triggered by this import
       10 │ var _contentfulSdkCore = require("contentful-sdk-core");
          ╵                                  ~~~~~~~~~~~~~~~~~~~~~

 > node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
    32580 │         throw new Error(`Failed to resolve entry for package "${id}". ` +
          ╵               ^
    at resolvePackageEntry (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:15)
    at tryNodeResolve (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32399:11)
    at Context.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32282:28)
    at Object.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:44228:55)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:69926:27
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64628:34
    at async callback (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:809:28)
    at async handleRequest (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:641:30)

   node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:18: note: This error came from the "onResolve" callback registered here
    64615 │             build.onResolve({ filter: /^[\w@][^:]/ }, async ({ path: id, importer, kind, resolveDir }) => {
          ╵                   ~~~~~~~~~
    at setup (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:19)
    at handlePlugins (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:733:23)
    at Object.buildOrServe (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1018:7)
    at /Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1742:17
    at new Promise (<anonymous>)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1741:14)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1617:51)
    at optimizeDeps (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64842:34)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

   node_modules/contentful/dist/es-modules/create-contentful-api.js:8:33: note: The plugin "vite:dep-pre-bundle" was triggered by this import
        8 │ var _contentfulSdkCore = require("contentful-sdk-core");
          ╵                                  ~~~~~~~~~~~~~~~~~~~~~

 > node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
    32580 │         throw new Error(`Failed to resolve entry for package "${id}". ` +
          ╵               ^
    at resolvePackageEntry (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:15)
    at tryNodeResolve (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32399:11)
    at Context.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32282:28)
    at Object.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:44228:55)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:69926:27
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64628:34
    at async callback (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:809:28)
    at async handleRequest (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:641:30)

   node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:18: note: This error came from the "onResolve" callback registered here
    64615 │             build.onResolve({ filter: /^[\w@][^:]/ }, async ({ path: id, importer, kind, resolveDir }) => {
          ╵                   ~~~~~~~~~
    at setup (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:19)
    at handlePlugins (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:733:23)
    at Object.buildOrServe (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1018:7)
    at /Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1742:17
    at new Promise (<anonymous>)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1741:14)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1617:51)
    at optimizeDeps (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64842:34)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

   node_modules/contentful/dist/es-modules/entities/space.js:8:33: note: The plugin "vite:dep-pre-bundle" was triggered by this import
        8 │ var _contentfulSdkCore = require("contentful-sdk-core");
          ╵                                  ~~~~~~~~~~~~~~~~~~~~~

 > node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
    32580 │         throw new Error(`Failed to resolve entry for package "${id}". ` +
          ╵               ^
    at resolvePackageEntry (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:15)
    at tryNodeResolve (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32399:11)
    at Context.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32282:28)
    at Object.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:44228:55)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:69926:27
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64628:34
    at async callback (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:809:28)
    at async handleRequest (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:641:30)

   node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:18: note: This error came from the "onResolve" callback registered here
    64615 │             build.onResolve({ filter: /^[\w@][^:]/ }, async ({ path: id, importer, kind, resolveDir }) => {
          ╵                   ~~~~~~~~~
    at setup (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:19)
    at handlePlugins (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:733:23)
    at Object.buildOrServe (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1018:7)
    at /Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1742:17
    at new Promise (<anonymous>)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1741:14)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1617:51)
    at optimizeDeps (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64842:34)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

   node_modules/contentful/dist/es-modules/paged-sync.js:8:33: note: The plugin "vite:dep-pre-bundle" was triggered by this import
        8 │ var _contentfulSdkCore = require("contentful-sdk-core");
          ╵                                  ~~~~~~~~~~~~~~~~~~~~~

 > node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
    32580 │         throw new Error(`Failed to resolve entry for package "${id}". ` +
          ╵               ^
    at resolvePackageEntry (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:15)
    at tryNodeResolve (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32399:11)
    at Context.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32282:28)
    at Object.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:44228:55)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:69926:27
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64628:34
    at async callback (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:809:28)
    at async handleRequest (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:641:30)

   node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:18: note: This error came from the "onResolve" callback registered here
    64615 │             build.onResolve({ filter: /^[\w@][^:]/ }, async ({ path: id, importer, kind, resolveDir }) => {
          ╵                   ~~~~~~~~~
    at setup (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:19)
    at handlePlugins (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:733:23)
    at Object.buildOrServe (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1018:7)
    at /Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1742:17
    at new Promise (<anonymous>)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1741:14)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1617:51)
    at optimizeDeps (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64842:34)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

   node_modules/contentful/dist/es-modules/entities/asset-key.js:10:33: note: The plugin "vite:dep-pre-bundle" was triggered by this import
       10 │ var _contentfulSdkCore = require("contentful-sdk-core");
          ╵                                  ~~~~~~~~~~~~~~~~~~~~~

 > node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
    32580 │         throw new Error(`Failed to resolve entry for package "${id}". ` +
          ╵               ^
    at resolvePackageEntry (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:15)
    at tryNodeResolve (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32399:11)
    at Context.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32282:28)
    at Object.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:44228:55)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:69926:27
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64628:34
    at async callback (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:809:28)
    at async handleRequest (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:641:30)

   node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:18: note: This error came from the "onResolve" callback registered here
    64615 │             build.onResolve({ filter: /^[\w@][^:]/ }, async ({ path: id, importer, kind, resolveDir }) => {
          ╵                   ~~~~~~~~~
    at setup (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:19)
    at handlePlugins (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:733:23)
    at Object.buildOrServe (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1018:7)
    at /Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1742:17
    at new Promise (<anonymous>)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1741:14)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1617:51)
    at optimizeDeps (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64842:34)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

   node_modules/contentful/dist/es-modules/entities/asset.js:11:33: note: The plugin "vite:dep-pre-bundle" was triggered by this import
       11 │ var _contentfulSdkCore = require("contentful-sdk-core");
          ╵                                  ~~~~~~~~~~~~~~~~~~~~~

 > node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
    32580 │         throw new Error(`Failed to resolve entry for package "${id}". ` +
          ╵               ^
    at resolvePackageEntry (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:15)
    at tryNodeResolve (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32399:11)
    at Context.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32282:28)
    at Object.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:44228:55)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:69926:27
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64628:34
    at async callback (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:809:28)
    at async handleRequest (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:641:30)

   node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:18: note: This error came from the "onResolve" callback registered here
    64615 │             build.onResolve({ filter: /^[\w@][^:]/ }, async ({ path: id, importer, kind, resolveDir }) => {
          ╵                   ~~~~~~~~~
    at setup (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:19)
    at handlePlugins (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:733:23)
    at Object.buildOrServe (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1018:7)
    at /Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1742:17
    at new Promise (<anonymous>)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1741:14)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1617:51)
    at optimizeDeps (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64842:34)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

   node_modules/contentful/dist/es-modules/entities/locale.js:11:33: note: The plugin "vite:dep-pre-bundle" was triggered by this import
       11 │ var _contentfulSdkCore = require("contentful-sdk-core");
          ╵                                  ~~~~~~~~~~~~~~~~~~~~~

 > node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
    32580 │         throw new Error(`Failed to resolve entry for package "${id}". ` +
          ╵               ^
    at resolvePackageEntry (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:15)
    at tryNodeResolve (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32399:11)
    at Context.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32282:28)
    at Object.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:44228:55)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:69926:27
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64628:34
    at async callback (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:809:28)
    at async handleRequest (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:641:30)

   node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:18: note: This error came from the "onResolve" callback registered here
    64615 │             build.onResolve({ filter: /^[\w@][^:]/ }, async ({ path: id, importer, kind, resolveDir }) => {
          ╵                   ~~~~~~~~~
    at setup (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:19)
    at handlePlugins (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:733:23)
    at Object.buildOrServe (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1018:7)
    at /Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1742:17
    at new Promise (<anonymous>)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1741:14)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1617:51)
    at optimizeDeps (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64842:34)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

   node_modules/contentful/dist/es-modules/entities/content-type.js:11:33: note: The plugin "vite:dep-pre-bundle" was triggered by this import
       11 │ var _contentfulSdkCore = require("contentful-sdk-core");
          ╵                                  ~~~~~~~~~~~~~~~~~~~~~

 > node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
    32580 │         throw new Error(`Failed to resolve entry for package "${id}". ` +
          ╵               ^
    at resolvePackageEntry (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:15)
    at tryNodeResolve (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32399:11)
    at Context.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32282:28)
    at Object.resolveId (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:44228:55)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:69926:27
    at async /Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64628:34
    at async callback (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:809:28)
    at async handleRequest (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:641:30)

   node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:18: note: This error came from the "onResolve" callback registered here
    64615 │             build.onResolve({ filter: /^[\w@][^:]/ }, async ({ path: id, importer, kind, resolveDir }) => {
          ╵                   ~~~~~~~~~
    at setup (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64615:19)
    at handlePlugins (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:733:23)
    at Object.buildOrServe (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1018:7)
    at /Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1742:17
    at new Promise (<anonymous>)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1741:14)
    at Object.build (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1617:51)
    at optimizeDeps (/Users/******/dev/sveltekit-contentful-app/node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:64842:34)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

   node_modules/contentful/dist/es-modules/entities/entry.js:11:33: note: The plugin "vite:dep-pre-bundle" was triggered by this import
       11 │ var _contentfulSdkCore = require("contentful-sdk-core");
          ╵                                  ~~~~~~~~~~~~~~~~~~~~~

10:35:29 [vite] error while updating dependencies:
Error: Build failed with 9 errors:
node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
node_modules/vite/dist/node/chunks/dep-6b5f3ba8.js:32580:14: error: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "contentful-sdk-core". The package may have incorrect main/module/exports specified in its package.json.
...
    at failureErrorWithLog (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1443:15)
    at /Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1125:28
    at runOnEndCallbacks (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:915:63)
    at buildResponseToResult (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1123:7)
    at /Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1230:14
    at /Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:606:9
    at handleIncomingPacket (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:703:9)
    at Socket.readFromStdout (/Users/******/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:573:7)
    at Socket.emit (events.js:315:20)
    at Socket.EventEmitter.emit (domain.js:467:12)

package.json

{
  "name": "sveltekit-contentful-app",
  "version": "0.0.1",
  "scripts": {
    "dev": "svelte-kit dev",
    "build": "svelte-kit build",
    "preview": "svelte-kit preview",
    "lint": "prettier --check --plugin-search-dir=. . && eslint --ignore-path .gitignore .",
    "format": "prettier --write --plugin-search-dir=. ."
  },
  "devDependencies": {
    "@sveltejs/kit": "next",
    "@typescript-eslint/eslint-plugin": "^4.19.0",
    "@typescript-eslint/parser": "^4.19.0",
    "contentful-sdk-core": "git://github.com/contentful/contentful-sdk-core.git#fix/os-error",
    "eslint": "^7.22.0",
    "eslint-config-prettier": "^8.1.0",
    "eslint-plugin-svelte3": "^3.2.0",
    "prettier": "~2.2.1",
    "prettier-plugin-svelte": "^2.2.0",
    "svelte": "^3.34.0",
    "svelte-preprocess": "^4.0.0",
    "tslib": "^2.0.0",
    "typescript": "^4.0.0",
    "vite": "^2.3.4"
  },
  "type": "module",
  "dependencies": {
    "contentful": "^8.3.6",
    "dotenv": "^10.0.0",
    "path": "^0.12.7"
  }
}
luizfonseca commented 3 years ago

@angelmeraz seems like an installation problem 🤔 (it's not installing the sdk) -- I will check with a clean project as soon as I have the time.

Not sure if it's intended, could you try also making it a normal dependency (not just a devDependency)?

angelmeraz commented 3 years ago

My bad there. Here it goes again, still having the same issue as before.

> svelte-kit dev

  SvelteKit v1.0.0-next.111

  local:   http://localhost:3000
  network: not exposed

  Use --host to expose server to other devices on this network

09:08:25 [vite] new dependencies found: contentful, updating...
 > node_modules/contentful/node_modules/contentful-sdk-core/dist/index.es-modules.js:3:9: error: No matching export in "browser-external:os" for import "platform"
    3 │ import { platform, release } from 'os';
      ╵          ~~~~~~~~

 > node_modules/contentful/node_modules/contentful-sdk-core/dist/index.es-modules.js:3:19: error: No matching export in "browser-external:os" for import "release"
    3 │ import { platform, release } from 'os';
      ╵                    ~~~~~~~

09:08:26 [vite] error while updating dependencies:
Error: Build failed with 2 errors:
node_modules/contentful/node_modules/contentful-sdk-core/dist/index.es-modules.js:3:9: error: No matching export in "browser-external:os" for import "platform"
node_modules/contentful/node_modules/contentful-sdk-core/dist/index.es-modules.js:3:19: error: No matching export in "browser-external:os" for import "release"
    at failureErrorWithLog (/Users/****/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1443:15)
    at /Users/****/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1125:28
    at runOnEndCallbacks (/Users/****/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:915:63)
    at buildResponseToResult (/Users/****/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1123:7)
    at /Users/****/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:1230:14
    at /Users/****/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:606:9
    at handleIncomingPacket (/Users/****/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:703:9)
    at Socket.readFromStdout (/Users/****/dev/sveltekit-contentful-app/node_modules/esbuild/lib/main.js:573:7)
    at Socket.emit (events.js:315:20)
    at Socket.EventEmitter.emit (domain.js:467:12)

package.json

{
  "name": "sveltekit-contentful-app",
  "version": "0.0.1",
  "scripts": {
    "dev": "svelte-kit dev",
    "build": "svelte-kit build",
    "preview": "svelte-kit preview",
    "lint": "prettier --check --plugin-search-dir=. . && eslint --ignore-path .gitignore .",
    "format": "prettier --write --plugin-search-dir=. ."
  },
  "devDependencies": {
    "@sveltejs/kit": "next",
    "@typescript-eslint/eslint-plugin": "^4.19.0",
    "@typescript-eslint/parser": "^4.19.0",
    "eslint": "^7.22.0",
    "eslint-config-prettier": "^8.1.0",
    "eslint-plugin-svelte3": "^3.2.0",
    "prettier": "~2.2.1",
    "prettier-plugin-svelte": "^2.2.0",
    "svelte": "^3.34.0",
    "svelte-preprocess": "^4.0.0",
    "tslib": "^2.0.0",
    "typescript": "^4.0.0",
    "vite": "^2.3.4"
  },
  "type": "module",
  "dependencies": {
    "contentful": "^8.3.6",
    "contentful-sdk-core": "git://github.com/contentful/contentful-sdk-core.git#fix/os-error",
    "dotenv": "^10.0.0",
    "path": "^0.12.7"
  }
}
LionOnTheWeb commented 3 years ago

I've been working on resolving this error as well as it's currently impacting my project which uses Svelte and Contentful. So far the steps I've taken to reduce errors and make progress is as follows:

In package.json install the fix version of contentful-sdk-core as a dependency (instead of dev dependency)

"dependencies": {
    "contentful": "^8.3.7",
    "contentful-sdk-core": "git://github.com/contentful/contentful-sdk-core.git#fix/os-error",
    ...
}

Then, this error went away:

[!] Error: 'platform' is not exported by node-resolve:empty.js, imported by node_modules/contentful-sdk-core/dist/index.es-modules.js
https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module

But produced these warnings and broke my build anyway:

(!) Unresolved dependencies
https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency
contentful-sdk-core (imported by contentful-sdk-core?commonjs-external)
(!) Missing global variable name
Use output.globals to specify browser global variable names corresponding to external modules
contentful-sdk-core (guessing '_contentfulSdkCore')

So working through them, I fixed the missing global variable name warning by adding a globals field to the output object in rollup.config.js like so:

export default {
    input: 'src/main.js',
    output: {
                 ...
        globals: {
            'contentful-sdk-core': '_contentfulSdkCore'
        }
    }, ...

And finally for the unresolved dependencies, I followed the doc linked in the warning message and added an external option to the export default for contentful-sdk-core:

export default {
    output: {
        ...
    },
    ...
    external: ['contentful-sdk-core']

After making those changes, the warnings are suppressed and the app finally compiles, however, it breaks immediately and I get a console error in the browser stating: Uncaught ReferenceError: _contentfulSdkCore is not defined

CC - @luizfonseca

LionOnTheWeb commented 3 years ago

@luizfonseca Any update on this? Can't get past a broken production build because of this

Chipsnet commented 3 years ago

If I can't solve this problem, I will have to stop adopting contentful because I can't use contentful with svelte.

LionOnTheWeb commented 3 years ago

@Chipsnet and @angelmeraz, the time in which this is taking for the pull request to be merged is ridiculous. If you both need the Contentful dependency for a production build with Svelte, a solution could be to use Contentful graphql api instead. It's was pretty easy to setup within a Svelte component like so:

    async function fetchData (query) {
        const res = await fetch('https://graphql.contentful.com/content/v1/spaces/'+spaceID, {
            method: 'POST',
            mode: 'cors',
            headers: {
                Authorization: "Bearer "+ accessToken,
                "Content-Type": "application/json",
            },
            body: JSON.stringify({query})
        })

        const result = await res.json()

        if (res.ok) {
            return result.data
        } else {
            throw new Error(result)
        }
    }
fforres commented 3 years ago

Wouldn't an inline require of os for the getNodeOS function allow for this to be bundled for web?

function getNodeOS() {
  const { platform, release } = require('os')
  var os = platform() || 'linux';
  var version = release() || '0.0.0';
  {....more code ....}
}
wwedmedyk commented 3 years ago

This error is also occuring in stencil.js projects using contentful

pfumagalli commented 3 years ago

For those stumbling here after seeing the error on Vite, you can still use the CJS version which works a-ok-ish :-) Your vite.config.ts (or .js) should include:

export default defineConfig({
  // ... all your configs are belong to us
  resolve: {
    // solve a little problem with ESM version of contentful-sdk-core
    alias: [ {
      find: 'contentful-sdk-core',
      replacement: 'contentful-sdk-core/dist/index.js'
    } ],
  },
})
ghost commented 3 years ago

:tada: This issue has been resolved in version 6.8.3 :tada:

The release is available on:

Your semantic-release bot :package::rocket:

ruderngespra commented 3 years ago

Hey everyone,

I am sorry this took so long! We just published a canary release that hopefully should fix the issue.

Could you try and install contentful@next in your projects and confirm if this works for you?

pfumagalli commented 3 years ago

I can confirm that with the new release the hack above for Vue/Vite is no longer necessary!

ruderngespra commented 3 years ago

Glad to hear! The fix has been merged to the main branch in v.8.5.3 of contentful.js

angelmeraz commented 2 years ago

I'm trying this out on a brand new SvelteKit project and I'm getting undefined from:

import contentful from 'contentful';

What I've done:

  1. Kick start a SvelteKit project: npm init svelte@next my-app, install dependencies...
  2. then added contentful with: npm i -D contentful

package.json

{
  "name": "sveltekit-platform",
  "version": "0.0.1",
  "scripts": {
    "dev": "svelte-kit dev -p 8080",
    "build": "svelte-kit build",
    "preview": "svelte-kit preview",
    "lint": "eslint --ignore-path .gitignore ."
  },
  "devDependencies": {
    "@sveltejs/kit": "next",
    "contentful": "^9.0.0",
    "eslint": "^7.32.0",
    "eslint-plugin-svelte3": "^3.2.1",
    "svelte": "^3.42.6"
  },
  "type": "module"
}
angelmeraz commented 2 years ago

import * as contentful from 'contentful'; and import { createClient } from 'contentful';

... seem to work!

marblegravy commented 2 years ago

Hey everyone,

I am sorry this took so long! We just published a canary release that hopefully should fix the issue.

Could you try and install contentful@next in your projects and confirm if this works for you?

I'm doing this today and am still getting an error.

`❯ npx vite --port=4000
Pre-bundling dependencies: vue contentful-vue (this will be run only when your dependencies or config have changed) ✘ [ERROR] No matching export in "browser-external:os" for import "platform"

node_modules/contentful-vue/node_modules/contentful-sdk-core/dist/es-modules/get-user-agent.js:1:9:
  1 │ import { platform, release } from 'os';
    ╵          ~~~~~~~~

✘ [ERROR] No matching export in "browser-external:os" for import "release"

node_modules/contentful-vue/node_modules/contentful-sdk-core/dist/es-modules/get-user-agent.js:1:19:
  1 │ import { platform, release } from 'os';`

manually changing the line in get-user-agent.js to import os from 'os'; resolves it and I can build and run a local environment.

My settings - nothing much there: { "name": "my-app", "private": true, "version": "0.0.0", "scripts": { "dev": "vite", "build": "vite build", "preview": "vite preview" }, "dependencies": { "contentful": "^8.5.1", "contentful-sdk-core": "^7.0.1", "contentful-vue": "^1.0.5", "vue": "^3.2.25" }, "devDependencies": { "@vitejs/plugin-vue": "^2.2.0", "vite": "^2.8.0" } }

pfumagalli commented 2 years ago

@marblegravy

node_modules/contentful-vue/node_modules/contentful-sdk-core/dist/es-modules/get-user-agent.js:1:9:
  1 │ import { platform, release } from 'os';
    ╵          ~~~~~~~~

The error is from a sub-dependency of contentful-vue (see path: node_modules/contentful-vue/node_modules/contentful-sdk-core) which uses an obsolete dependency of contentful.