我有一个模块,我想在另一个项目中使用。它是使用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
的上方,它会返回预期的内容。
感谢您的帮助,我觉得我几乎已经拥有它,但我并不在那里。
答案 0 :(得分:1)
也许这个github问题可以帮到你
Can't require bundle on node.js
在webpack配置文件中设置这些
target: "node"
output.libraryTarget: "commonjs"
答案 1 :(得分:0)