vue-i18n-next: Failed to Resolve Entry for Package "@intlify/shared"

Reporting a bug?

Bug Description:

I encountered an issue while working with the package in a Vite project. The error message suggests a problem with resolving the entry for the package “@intlify/shared,” and it mentions a potential issue with the package’s file.vue-i18n@9.3.0package.json

plaintext

 Failed to resolve entry for package "@intlify/shared". The package may have incorrect main/module/exports specified in its package.json: No known conditions for "." specifier in "@intlify/shared" package [plugin vite:dep-pre-bundle]

    ../../node_modules/.pnpm/vue-i18n@9.3.0_vue@3.3.4/node_modules/vue-i18n/dist/vue-i18n.cjs:8:21:
      8 │ var shared = require('@intlify/shared');
        ╵                      ~~~~~~~~~~~~~~~~~

  This error came from the "onResolve" callback registered here:

    ../../node_modules/.pnpm/esbuild@0.18.11/node_modules/esbuild/lib/main.js:1282:20:
      1282 │       let promise = setup({
           ╵                     ^

    at setup (file:///D:/development/celeris-web/node_modules/.pnpm/vite@4.4.9_@types+node@20.5.9/node_modules/vite/dist/node/chunks/dep-df561101.js:39921:19)
    at handlePlugins (D:\development\celeris-web\node_modules\.pnpm\esbuild@0.18.11\node_modules\esbuild\lib\main.js:1282:21)
    at buildOrContextImpl (D:\development\celeris-web\node_modules\.pnpm\esbuild@0.18.11\node_modules\esbuild\lib\main.js:971:5)
    at Object.buildOrContext (D:\development\celeris-web\node_modules\.pnpm\esbuild@0.18.11\node_modules\esbuild\lib\main.js:779:5)
    at D:\development\celeris-web\node_modules\.pnpm\esbuild@0.18.11\node_modules\esbuild\lib\main.js:2175:68
    at new Promise (<anonymous>)
    at Object.context (D:\development\celeris-web\node_modules\.pnpm\esbuild@0.18.11\node_modules\esbuild\lib\main.js:2175:27)
    at Object.context (D:\development\celeris-web\node_modules\.pnpm\esbuild@0.18.11\node_modules\esbuild\lib\main.js:2015:58)
    at prepareEsbuildOptimizerRun (file:///D:/development/celeris-web/node_modules/.pnpm/vite@4.4.9_@types+node@20.5.9/node_modules/vite/dist/node/chunks/dep-df561101.js:45967:35)

D:\development\celeris-web\node_modules\.pnpm\esbuild@0.18.11\node_modules\esbuild\lib\main.js:1639
  let error = new Error(`${text}${summary}`);
              ^

Error: Build failed with 1 error:
../../node_modules/.pnpm/vue-i18n@9.3.0_vue@3.3.4/node_modules/vue-i18n/dist/vue-i18n.cjs:8:21: ERROR: [plugin: vite:dep-pre-bundle] Failed to resolve entry for packag
e "@intlify/shared". The package may have incorrect main/module/exports specified in its package.json: No known conditions for "." specifier in "@intlify/shared" package
    at failureErrorWithLog (D:\development\celeris-web\node_modules\.pnpm\esbuild@0.18.11\node_modules\esbuild\lib\main.js:1639:15)
    at D:\development\celeris-web\node_modules\.pnpm\esbuild@0.18.11\node_modules\esbuild\lib\main.js:1051:25
    at D:\development\celeris-web\node_modules\.pnpm\esbuild@0.18.11\node_modules\esbuild\lib\main.js:1515:9
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  errors: [
    {
      detail: Error: Failed to resolve entry for package "@intlify/shared". The package may have incorrect main/module/exports specified in its package.json: No known conditions for "." specifier in "@intlify/shared" package
          at packageEntryFailure (file:///D:/development/celeris-web/node_modules/.pnpm/vite@4.4.9_@types+node@20.5.9/node_modules/vite/dist/node/chunks/dep-df561101.js:28691:11)
          at resolvePackageEntry (file:///D:/development/celeris-web/node_modules/.pnpm/vite@4.4.9_@types+node@20.5.9/node_modules/vite/dist/node/chunks/dep-df561101.js:28686:9)
          at tryNodeResolve (file:///D:/development/celeris-web/node_modules/.pnpm/vite@4.4.9_@types+node@20.5.9/node_modules/vite/dist/node/chunks/dep-df561101.js:28419:20)
          at Context.resolveId (file:///D:/development/celeris-web/node_modules/.pnpm/vite@4.4.9_@types+node@20.5.9/node_modules/vite/dist/node/chunks/dep-df561101.js:28180:28)
          at Object.resolveId (file:///D:/development/celeris-web/node_modules/.pnpm/vite@4.4.9_@types+node@20.5.9/node_modules/vite/dist/node/chunks/dep-df561101.js:44207:64)
          at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
          at async file:///D:/development/celeris-web/node_modules/.pnpm/vite@4.4.9_@types+node@20.5.9/node_modules/vite/dist/node/chunks/dep-df561101.js:65837:21     
          at async D:\development\celeris-web\node_modules\.pnpm\vite-plugin-inspect@0.7.38_rollup@2.79.1_vite@4.4.9\node_modules\vite-plugin-inspect\dist\index.cjs:1237:26
          at async D:\development\celeris-web\node_modules\.pnpm\vite-plugin-inspect@0.7.38_rollup@2.79.1_vite@4.4.9\node_modules\vite-plugin-inspect\dist\index.cjs:1237:26
          at async file:///D:/development/celeris-web/node_modules/.pnpm/vite@4.4.9_@types+node@20.5.9/node_modules/vite/dist/node/chunks/dep-df561101.js:39941:34,    
      id: '',
      location: {
        column: 21,
        file: '../../node_modules/.pnpm/vue-i18n@9.3.0_vue@3.3.4/node_modules/vue-i18n/dist/vue-i18n.cjs',
        length: 17,
        line: 8,
        lineText: "var shared = require('@intlify/shared');",
        namespace: '',
        suggestion: ''
      },
      notes: [
        {
          location: {
            column: 20,
            file: '../../node_modules/.pnpm/esbuild@0.18.11/node_modules/esbuild/lib/main.js',
            length: 0,
            line: 1282,
            lineText: '      let promise = setup({\n' +
              '    at setup (file:///D:/development/celeris-web/node_modules/.pnpm/vite@4.4.9_@types+node@20.5.9/node_modules/vite/dist/node/chunks/dep-df561101.js:39921:19)\n' +
              '    at handlePlugins (D:\\development\\celeris-web\\node_modules\\.pnpm\\esbuild@0.18.11\\node_modules\\esbuild\\lib\\main.js:1282:21)\n' +
              '    at buildOrContextImpl (D:\\development\\celeris-web\\node_modules\\.pnpm\\esbuild@0.18.11\\node_modules\\esbuild\\lib\\main.js:971:5)\n' +
              '    at Object.buildOrContext (D:\\development\\celeris-web\\node_modules\\.pnpm\\esbuild@0.18.11\\node_modules\\esbuild\\lib\\main.js:779:5)\n' +       
              '    at D:\\development\\celeris-web\\node_modules\\.pnpm\\esbuild@0.18.11\\node_modules\\esbuild\\lib\\main.js:2175:68\n' +
              '    at new Promise (<anonymous>)\n' +
              '    at Object.context (D:\\development\\celeris-web\\node_modules\\.pnpm\\esbuild@0.18.11\\node_modules\\esbuild\\lib\\main.js:2175:27)\n' +
              '    at Object.context (D:\\development\\celeris-web\\node_modules\\.pnpm\\esbuild@0.18.11\\node_modules\\esbuild\\lib\\main.js:2015:58)\n' +
              '    at prepareEsbuildOptimizerRun (file:///D:/development/celeris-web/node_modules/.pnpm/vite@4.4.9_@types+node@20.5.9/node_modules/vite/dist/node/chunks/dep-df561101.js:45967:35)',
            namespace: 'file',
            suggestion: ''
          },
          text: 'This error came from the "onResolve" callback registered here:'
        }
      ],
      pluginName: 'vite:dep-pre-bundle',
      text: 'Failed to resolve entry for package "@intlify/shared". The package may have incorrect main/module/exports specified in its package.json: No known conditions for "." specifier in "@intlify/shared" package'
    }
  ],
  warnings: []
}

Node.js v18.15.0

Expected behavior

I expected the package to resolve dependencies correctly without encountering this error.vue-i18n

Reproduction

update dependency vue-i18n@9.3.0 https://github.com/kirklin/celeris-web/tree/update_deps

System Info

System:
    OS: Windows 10 10.0.23536
    CPU: (20) x64 12th Gen Intel(R) Core(TM) i7-12700
    Memory: 1.38 GB / 31.75 GB
  Binaries:
    Node: 18.15.0 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.19 - ~\AppData\Roaming\npm\yarn.CMD
    npm: 9.1.1 - C:\Program Files\nodejs\npm.CMD
    pnpm: 8.7.1 - D:\development\celeris-web\node_modules\.bin\pnpm.CMD
  Browsers:
    Edge: Spartan (44.23536.1000.0), Chromium (117.0.2045.12), ChromiumDev (118.0.2060.1)
    Internet Explorer: 11.0.23536.1000
  npmPackages:
    vite: ^4.4.9 => 4.4.9
    vitest: ^0.34.3 => 0.34.3

Screenshot

image

Additional context

No response

Validations

About this issue

  • Original URL
  • State: closed
  • Created 10 months ago
  • Reactions: 1
  • Comments: 15 (2 by maintainers)

Most upvoted comments

中文版:issue总结:

解决 Vite 配置中的 vue-i18n 问题

如果你在使用 Vite 构建项目时遇到了 Vue I18n 相关的问题,下面的解决方案可以帮助你解决这个问题。

修改 Vite 配置

在你的 Vite 配置文件中,有一个需要修改的部分,将它改为以下内容可以解决问题:

// vite.config.js

// 在 resolve 部分添加别名(alias)
resolve: {
  alias: {
    "vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js", // 修改前
    "vue-i18n": "vue-i18n/dist/vue-i18n.esm-bundler.js", // 修改后
  },
},

这个更改将告诉 Vite 使用 vue-i18n.esm-bundler.js 而不是 vue-i18n.cjs.js,从而解决问题。

使用 unplugin-vue-i18n 插件

此外,我们强烈建议你使用 unplugin-vue-i18n 插件,它可以优化国际化配置

English version Issue Summary:

Resolving Vue I18n Issues in Vite Configuration

If you are encountering Vue I18n-related issues while building your project with Vite, the following solutions can help you address the problem.

Modify Your Vite Configuration

In your Vite configuration file, there’s a section that needs to be adjusted. Changing it to the following content can resolve the issue:

// vite.config.js

// Add an alias in the resolve section
resolve: {
  alias: {
    "vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js", // Before modification
    "vue-i18n": "vue-i18n/dist/vue-i18n.esm-bundler.js", // After modification
  },
},

This change will instruct Vite to use vue-i18n.esm-bundler.js instead of vue-i18n.cjs.js, thereby resolving your issue.

Use the unplugin-vue-i18n Plugin

Furthermore, we strongly recommend using the unplugin-vue-i18n plugin, which optimizes internationalization configuration for both development and production environments.

@kirklin Hi! I noticed that your vite config has vue-i18n.cjs.js for cjs instead of vue-i18n.esm-bundler.js for esm. You can solve your issue by setting up vue-i18n.esm-bundler.js.

https://github.com/kirklin/celeris-web/blob/348d7ebf8a09d1d4b40d5e4abed24c30a3512601/packages/node/vite/src/config/configs/application.ts#L31

As mentioned in the vue-i18n docs, there is an unplugin-vue-i18n for the bundler. This plugin will optimize it for development / production building. I recommend you would use it.

I wanted to let you know that I have successfully resolved the issue by following your modification suggestion and setting up vue-i18n.esm-bundler.js. The project is now running smoothly. Thank you for your assistance! Additionally, I have considered your suggestion about the unplugin-vue-i18n plugin, and I think it’s a great idea. I will definitely consider using it to optimize both development and production builds. Once again, thank you for your advice and support!

Thank you for solving this so quickly!

I tried setting up unplugin-vue-i18n, although I must confess I think it’s hard to understand what exactly the benefits are. My Vite/PrimeVue setup started to throw a lot of errors when I tried following the steps. Would love to see an example of how to use it with dynamically loaded locales, if the benefits of using it are tangible.