在NodeJS中混淆变量导出失败

时间:2016-09-01 04:13:20

标签: node.js meteor typescript babeljs

我正在将Meteor应用程序从TypeScript转换为Javascript。在服务器端,我在使用TypeScript的import / export代码中遇到了一些问题,但似乎无法在Javascript中运行。我添加了一个.babelrc(下面),我假设(显然不正确)Meteor / Babel会将import / export转换为在NodeJS中工作。

单步执行WebStorm中的代码,导出时导出似乎未定义:

// MyModule.js
export var my_var = new MyObj();
module.exports.my_var = my_var;  // Previous line isn't working, let's try ES5-style

// main.js
var MyModule = require("./MyModule");
// Why is MyModule is undefined here?!

import {my_var} from "./MyModule";
// Why is my_var is undefined here?!

如果重要,我的.babelrc:

{
  "presets": [ "meteor", "es2015", "stage-0" ],
  "plugins": ["transform-flow-strip-types"]
}

我在这里做错了什么?如何正确导入my_var

2 个答案:

答案 0 :(得分:0)

一切都按预期工作

MyModule.js

function MyObj() {}
export var my_var = new MyObj();
exports.my_var2 = my_var;

main.js

var myModule = require('./mod');
console.log('requiring', myModule);

import {my_var} from './mod';
console.log('importing', my_var);

输出

#dont forget npm install babel-preset-es2015
❯ babel-node --presets es2015 main.js
requiring { my_var: MyObj {}, my_var2: MyObj {} }
importing MyObj {}

答案 1 :(得分:0)

深入挖掘后,似乎是一个缓存问题。按照https://github.com/meteor/meteor/issues/5328中的说明删除meteor缓存目录修复了问题