Node.js报错:Cannot use import statement outside a module 求助
解决
SyntaxError: Cannot use import statement outside a module问题 这个错误我太熟了!本质是Node.js默认采用CommonJS模块系统(用require/module.exports),但你代码里混合了ES模块的import/export语法,导致Node搞不清该怎么处理模块加载。给你两个靠谱的解决方案,选一个适合你的就行:
方案一:统一使用ES模块
这种方式需要让Node把所有.js文件都当作ES模块处理,步骤如下:
- 在项目根目录的
package.json中添加一行配置:"type": "module" - 把所有
require语句替换成ES模块的import语法,注意ES模块导入需要显式加文件后缀,导入JSON还要加类型声明:- 修改
detailsPage.js里的导入:// 替换原来的require import utils from "../utils/utils.js"; import { assert } from 'chai'; // 不用写node_modules路径,Node会自动查找 import userData from '../globalContent.json' assert { type: 'json' }; - 修改
detailsPageObj.js里的导入:// 替换原来的require import utils from "../utils/utils.js"; import userData from '../globalContent.json' assert { type: 'json' };
- 修改
方案二:统一使用CommonJS模块
这种方式把所有ES模块语法改成CommonJS风格,步骤如下:
- 修改
detailsPage.js里的ES导入:// 替换原来的import const { DetailsPage } = require('../tests/detailsPageObj'); - 修改
detailsPageObj.js里的ES语法:
这里的// 替换原来的import const { element, by } = require('protractor'); // 替换原来的export class DetailsPage { // 你的类代码保持不变 } module.exports = { DetailsPage };require导入JSON可以保持原样,不需要额外修改。
额外注意事项
- 如果使用Protractor,记得同步调整配置文件(比如
protractor.conf.js)的模块语法,避免出现新的加载错误。 - 尽量不要在同一个项目里混合两种模块语法,否则很容易出现类似的兼容性问题。
内容的提问来源于stack exchange,提问作者PythonNewbie
相关产品推荐
相关产品推荐

