MacOS下Nuxt JS配置SSL服务启动报import语法错误求助
解决方案
方案1:统一使用CommonJS语法(改动最小,适配现有server.js逻辑)
报错根源是server.js用CommonJS规范的require加载nuxt.config.js,但后者用了ES模块的import/export default语法,Node默认不支持两种规范混写。直接修改nuxt.config.js语法即可:
// 把import改为require const axiosModule = require('./modules/axiosModule') const momentModule = require('./modules/momentModule') // 把export default改为module.exports module.exports = { server: { host: '0.0.0.0', port: 3000, }, // 其余原有配置保持不变 }
修改后直接运行原有npm run dev命令即可正常启动。
方案2:启用Node ES模块模式(保留所有import写法)
如果不想改动项目里已有的ES模块写法,按以下步骤调整:
- 在
package.json中新增配置项:
"type": "module"
- 把
server.js里所有CommonJS的require语法替换为ES模块import语法,示例:
import { Nuxt, Builder } from 'nuxt' import express from 'express' const expressServer = express() import thisHttp from 'http' import thisHttps from 'https' import thisFs from 'fs-extra' // 加载nuxt.config时注意补全.js后缀 import nuxtConfig from './nuxt.config.js' // 其余原有逻辑保持不变
方案3:使用esm加载器(零改动业务代码)
如果不想修改任何现有JS文件的语法,可以用esm加载器做兼容:
- 安装esm依赖:
npm install esm --save-dev
- 修改
package.json中的dev启动命令:
"dev": "node -r esm server.js"
重启服务即可正常识别import语法。
内容的提问来源于stack exchange,提问作者Uğurcan
相关产品推荐
相关产品推荐

