【发布时间】:2020-06-07 04:17:53
【问题描述】:
在过去的几天里,我对此感到有些头疼,这肯定是由于我缺乏经验。我最近开始使用nuxt 和nuxt 模块。
当我使用命令yarn create nuxt-app my-project 时,nuxt.config.js 文件将填充module.exports。我的问题是,当我安装某些模块时,配置只在export default 中工作。例如,我有以下配置:
build: {
extend (config, { isDev, isClient }) {
if (isDev && isClient) {
config.module.rules.push({
enforce: 'pre',
test: /\.(js|vue)$/,
loader: 'eslint-loader',
exclude: /(node_modules)/
})
}
}
}
这个配置只能在export default里面工作,但是我写在module.exports里面就不行,我不知道原因。
另一个例子是head,假设如下代码:
head: {
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.png' }
]
},
当我把它放在export default 中时,它不起作用,而在module.exports 中它起作用了。所以,直到现在我都在反复试验,这取决于它在哪里工作。
我知道问题module.exports vs. export default in Node.js and ES6 中有一个参考。但是,我还不清楚为什么有些东西在 module.exports 中有效,而另一些在 export default 中有效。
我们将不胜感激。
【问题讨论】:
-
你能澄清一下它到底是如何不起作用的吗?错误信息是什么? transpiled 环境中
export和module.exports之间的区别取决于 ES/CommonJS 模块互操作的工作方式(取决于 Webpack/Babel/TS 配置)。在用户空间中,module.exports通常可以与export default互换,因为 CommonJS 模块导出被视为默认导出。在某些配置中,module.exports可以与export { }互换。我无法检查模块互操作在 Nuxt 配置中的工作方式。试试exports.default =而不是module.exports,让我知道这是否可行。 -
在我的情况下,[nuxt.config.ts]在[export default config]和[exports.default = config]的条件下不加载配置。
标签: javascript vue.js ecmascript-6 nuxt.js