Module is a CommonJS module, which may not support all module.exports as named exports.
Reporting a bug?
Hello! I'm using vite-ssr-plugin with vue3 and i18n with unplugin-vue-i18n On build mode I have an error. But on dev mode everything is great.
import { useI18n, createI18n } from "vue-i18n/dist/vue-i18n.runtime.esm-bundler.js";
^^^^^^^^^^
SyntaxError: Named export 'createI18n' not found. The requested module 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js' 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 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js';
const { useI18n, createI18n } = pkg;
Found this comment about this problem, https://github.com/intlify/vue-i18n-next/issues/1131#issuecomment-1232596381
And explanation https://github.com/vuejs/core/pull/4814#issuecomment-1232806856
Also there are solution for vite-plugin-vue-i18n https://github.com/intlify/bundle-tools/pull/172
But I can't find solutions for unplugin-vue-i18n
Also opened issue in repo vite-plugin-ssr https://github.com/brillout/vite-plugin-ssr/issues/634
If change ssr parameter in vite.config.ts - building is successfull.
According to the documentation ssr can be customized with 4 keys. I'm trying to find out wich key is causing build error.
Expected behavior
No error on build mode
Reproduction
"dependencies": {
"@intlify/unplugin-vue-i18n": "0.8.1",
"@mdi/font": "7.1.96",
"@types/compression": "1.7.2",
"@types/express": "4.17.16",
"@types/node": "18.11.18",
"@vitejs/plugin-vue": "4.0.0",
"@vue/compiler-sfc": "3.2.45",
"@vue/server-renderer": "3.2.45",
"axios": "1.2.6",
"compression": "1.7.4",
"cross-env": "7.0.3",
"express": "4.18.2",
"roboto-fontface": "0.10.0",
"sass": "1.57.1",
"sass-loader": "13.2.0",
"sirv": "2.0.2",
"ts-node": "10.9.1",
"typescript": "4.9.4",
"vite": "4.0.4",
"vite-plugin-ssr": "0.4.72",
"vite-plugin-vuetify": "1.0.2",
"vue": "3.2.45",
"vue-i18n": "9.2.2",
"vuetify": "3.1.2"
},
"type": "module",
"devDependencies": {
"@mdi/js": "7.1.96",
"eslint": "8.33.0",
"eslint-import-resolver-typescript": "3.5.3",
"eslint-plugin-import": "2.27.5",
"eslint-plugin-vue": "9.9.0",
"vite-plugin-pwa": "0.14.1",
"vite-svg-loader": "4.0.0",
"vitepress": "1.0.0-alpha.43"
}
Issue Package
unplugin-vue-i18n
System Info
Linux 5.15.0-58-generic #64-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
Screenshot

Additional context
In vite.config.ts config file
import vue from '@vitejs/plugin-vue';
import ssr from 'vite-plugin-ssr/plugin';
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite';
const config: UserConfig = {
plugins: [
vue(),
ssr({ prerender: true, includeAssetsImportedByServer: true }),// If put here ssr(), without parametrs - building successfull, without errors
VueI18nPlugin({
include: resolve(dirname(fileURLToPath(import.meta.url)), './locales/dictionary/**'),
}),
],
resolve: {
alias: {
'vue-i18n': 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js',
},
},
};
createI18n used in app.ts with this:
import messages from '@intlify/unplugin-vue-i18n/messages';
export { createApp };
function createApp(pageContext: PageContext) {
const { Page, pageProps } = pageContext;
const i18n = createI18n({
legacy: false,
locale: pageContext.locale,
fallbackLocale: 'en',
messages,
});
const PageWithLayout = defineComponent({
render() {
return h(
PageShell,
{},
{
default() {
return h(Page, pageProps || {});
},
}
);
},
});
const app = createSSRApp(PageWithLayout);
app.use(i18n);
app.use(vuetify);
app.use(CountryFlag);
app.provide('pageContext', pageContext);
setPageContext(app, pageContext);
return app;
}
Validations
- [X] Read the Contributing Guidelines.
- [X] Read the README
- [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
- [X] Check that this is a concrete bug. For Q&A open a GitHub Discussion.
after some updates error changed

The same error with @intlify/unplugin-vue-i18n 0.8.2
file:///srv/app/dist/server/entry-server.js:8
import { useI18n, createI18n } from "vue-i18n/dist/vue-i18n.runtime.esm-bundler.js";
^^^^^^^^^^
SyntaxError: Named export 'createI18n' not found. The requested module 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js' 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 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js';
const { useI18n, createI18n } = pkg;
at ModuleJob._instantiate (node:internal/modules/esm/module_job:124:21)
at async ModuleJob.run (node:internal/modules/esm/module_job:190:5)
我也遇见类似的问题,我是在项目中集成了vuepress2,想在vuepress展示自己开发的组件。结果导致无法执行pnpm docs:build。异常信息如下:
import { createI18n, useI18n } from "vue-i18n/dist/vue-i18n.runtime.esm-bundler.js";
^^^^^^^^^^
SyntaxError: Named export 'createI18n' not found. The requested module 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js' 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 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js';
const { createI18n, useI18n } = pkg;
at ModuleJob._instantiate (node:internal/modules/esm/module_job:124:21)
at async ModuleJob.run (node:internal/modules/esm/module_job:190:5)
ELIFECYCLE Command failed with exit code 1.
Well, for solve this error i removed i18n from project, and tried to use self-written package for internationalization.
@alivadjid, The issue is with the Vite plugin unplugin-vue-i18n, not vue-i18n. The unplugin-vue-i18n plugin is optional for vue-i18n. You can import messages yourself, as described in the documentation.
However, it is very sad that the declared functionality of this plugin does not work.
@alivadjid 我也有类似的问题,我找到了一个折衷方案,希望能够帮助到您,下方是我的的配置:(I have similar problems. I have found a compromise that I hope will help you. Below is my configuration:)
ssr: {
/**
* 由于在 build 时会报错 SyntaxError: Named export 'createI18n' not found.
* The requested module 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js' is a CommonJS module, which may not support all module.exports as named exports.
* 所以要添加以下配置。详见:https://vite-plugin-ssr.com/common-issues 与 https://vite-plugin-ssr.com/invalid-esm#solution
*/
noExternal: ['vue-i18n']
}
@WangJincheng4869 Your solution fixed my production build but then I could not start my App in dev mode anymore ("module not found"). I uninstalled unplugin-vue-i18n and used vue-i18n directly and now it works in dev and prod.
@WangJincheng4869 Your solution fixed my production build but then I could not start my App in dev mode anymore ("module not found"). I uninstalled unplugin-vue-i18n and used vue-i18n directly and now it works in dev and prod. use const isProduction = process.env.NODE_ENV === 'production';
to do some special case in vite config file.