在另一个模块中使用模块。 module.exports是空对象

时间:2018-02-08 13:02:33

标签: javascript node.js webpack-2 node-modules

我有一个模块,我想在另一个项目中使用。它是使用webpack3编译的。在第二个项目中,我已经链接到第一个模块并且似乎有效,除非我需要模块,它总是以空对象的形式返回。

tsconfig选项

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "sourceMap": true,
    "outDir": "./dist",
    "strict": true,
    "allowJs": true,
    "lib": [
      "es2015"
    ]
  }
}

dist / index.js(缩短)

/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
var Test = /** @class */ (function () {
    function Test() {
    }
    Test.prototype.test = function () {
        console.log('works');
    };
    return Test;
}());
exports.Test = Test;


/***/ })
/******/ ]);

package.json(缩写)

{
   "main": "dist/index.js",
}

这归结为一个名为" test"的模块,一个名为Test的类,它还包含一个名为Test的方法。

如果我在第一个项目上运行module.exports,它就是一个空对象。

在第二个与之关联的项目中,并将其包含在其节点模块中。

const test = require("test");
console.log(test); // {}

如果我从另一个节点模块中复制代码,并将其粘贴到dist/index.js的上方,它会返回预期的内容。

  • 导出的webpack配置是否也需要通过webpack导入?我希望它可以在许多项目中使用,无论他们是否使用webpack。

感谢您的帮助,我觉得我几乎已经拥有它,但我并不在那里。

2 个答案:

答案 0 :(得分:1)

也许这个github问题可以帮到你

Can't require bundle on node.js

在webpack配置文件中设置这些

target: "node" 
output.libraryTarget: "commonjs"

答案 1 :(得分:0)

修改

在webpack.config中概述包是很重要的

https://stackoverflow.com/a/44542254/3425961