使用节点10将ESM导入CJS代码

时间:2018-04-25 22:45:44

标签: javascript node.js ecmascript-6

使用没有Babel的Node 10将ESM导入CJS的正确方法是什么?

我目前正在这样做,但我收到Not supported错误,我认为这是Babel语法,但我似乎无法找到Node 10语法...( https://medium.com/@giltayar/native-es-modules-in-nodejs-status-and-future-directions-part-i-ee5ea3001f71

//ESM Files (.mjs), Code executed in CJS, (.js), Node 10

//CJS code
const commandFiles = fs.readdirSync(folderPath);
for (const file of commandFiles) {
            let command =  await import(`./Commands/${file}`);
        }
//ESM code
class  MyClass {}
export default new MyClass();

2 个答案:

答案 0 :(得分:0)

好的,public boolean someFunction( String myValue ){ Connection conn = null; boolean fRetVal = false; String query = "select something from anytable"; try { conn = DBUtil.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery( query ); if ( rs.next() ) fRetVal = true; rs.close(); stmt.close(); } catch( SQLException ex ) { System.out.println(ex); }finally{ DBUtil.closeConnection(conn); } return fRetVal; } 中缺少--experimental-modules个标记。

我认为在节点10中不需要这样做。

答案 1 :(得分:0)

实际上您应该运行node --experimental-modules app.mjs

请注意,命名约定是保留.mjs并直接运行它(而.js仍用于CommonJS)。

侧面通知:使用.mjs的浏览器也可以与ES6模块一起运行<script type=module src=path/to/app.mjs></script>