【发布时间】:2020-05-02 04:03:42
【问题描述】:
我有一个 Javascript 文件 utils.js,其中包含一些实用功能。这是一个例子:
export function RemoveHTML(Str) {
return Str.replace(/<[^>]*(?:>|$)/gi,'');
}
我可以通过像这样导入utils.js 文件来使用这些功能:
import {RemoveHTML} from '../js/utils.js';
我还有一个model.js 文件,用于一些这样的数据查询(为简洁起见,使用伪代码):
async function getStuff() {
await DBConnection.connect();
return results
}
module.exports = {
getStuff
}
为了“一致性”,我想我会将model.js 更改为:
export async function getStuff() {
await DBConnection.connect();
return results
}
如果我这样做了,我会收到一个应用程序崩溃错误说明:
SyntaxError: Unexpected token 'export'
使用export function() 和module.exports 导出函数有什么区别?
更新:
我在Webpack 中使用Babel,如下所示,为什么会出现错误?:
{
test: /\.js$/,
include: [ srcPath ],
exclude: ['/node_modules/'],
use: {
loader: 'babel-loader',
options: {
presets: ["@babel/preset-env"] //Preset used for env setup
}
}
},
【问题讨论】:
-
export 和 import 是 nodejs 本身不支持的 es6 功能(取决于版本)。要么使用 babel 进行编译,要么设置 package.json 类型模块或使用 mjs(再次取决于 nodejs 版本)
-
export语法是新的,NodeJS 还不支持。module.exports是 NodeJS 提供模块的方式,因此可以在本地工作。 -
我在我的 Webpack 构建中使用 Babel。所以我不应该得到这个错误吗?
标签: javascript node.js webpack babeljs