导入next.config中的本地文件
问题
嗨,我们面临的问题是想要创建一个动态的下一个配置。如果我们不导入任何文件,但是在试图导入next.config.mjs中的常量文件时,情况就会中断。
为了使用配置文件的MJS变体,我们使用了下一个版本12.1。
常量文件是一个简单的JS文件,带有一些值来确定我们支持的不同品牌需要使用的区域设置。这些值用于多个地方,这就是为什么我们不想在这里硬编码这些值的原因。
import { locales } from './src/constants/locales'; // It breaks on this import
const currentPlatform = process.env.NEXT_PUBLIC_PLATFORM;
module.exports = () => ({
i18n: {
localeDetection: false,
...locales[currentPlatform],
},
images: {
domains: [
// Our domains
],
},
async rewrites() {
return [
// Our rewrites
];
},
webpack: (config, { defaultLoaders }) => {
config.module.rules.push(
// Our config
);
return config;
},
});
错误信息
这是当我们试图启动dev服务器时引发的错误,这表明导入路径是错误的。(事实并非如此。)
error - Failed to load next.config.mjs, see more info here https://nextjs.org/docs/messages/next-config-error
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/*****/Development/****/********/src/constants/locales' imported from /Users/******/Development/******/******/next.config.mjs
Did you mean to import ../src/constants/locales.js?
at finalizeResolution (internal/modules/esm/resolve.js:276:11)
at moduleResolve (internal/modules/esm/resolve.js:699:10)
at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:810:11)
at Loader.resolve (internal/modules/esm/loader.js:86:40)
at Loader.getModuleJob (internal/modules/esm/loader.js:230:28)
at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:56:40)
at link (internal/modules/esm/module_job.js:55:36) {
code: 'ERR_MODULE_NOT_FOUND'
}
任何提示,技巧或额外的信息是欢迎的!
提前谢谢。
发布于 2022-01-22 14:35:11
也许您使用的是.vercelignore
,而不是包含文件/文件夹。我犯了同样的错误,在我的例子中,我没有包括!/lingui.config.js
。
> Build error occurred
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/vercel/path0/lingui.config.js' imported from /vercel/path0/next.config.mjs
at new NodeError (internal/errors.js:322:7)
at moduleResolve (internal/modules/esm/resolve.js:731:10)
at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:842:11)
at Loader.resolve (internal/modules/esm/loader.js:89:40)
at Loader.getModuleJob (internal/modules/esm/loader.js:242:28)
at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:76:40)
at link (internal/modules/esm/module_job.js:75:36) {
code: 'ERR_MODULE_NOT_FOUND'
}
为了解决这个问题,我添加了丢失的文件:
/*
!/public
!/src
!/lingui.config.js # <-- my mistake
!/next-env.d.ts
!/next.config.mjs
!/package.json
!/postcss.config.js
!/tailwind.config.cjs
!/tsconfig.json
!/yarn.lock
发布于 2022-12-01 22:10:16
我使用nextjsv13.x也遇到了同样的问题,并且我成功地导入了我的:
import { var1, var2 } from './src/constants.js
使用在constants
文件中编写的标准js模块。
const var1 = 'hello'; const var2 = 'world'; module.exports = { var1, var2 };
https://stackoverflow.com/questions/70381402
复制相似问题