gpt4 book ai didi

node.js - 找不到模块 "module"- Rewire.js

转载 作者:搜寻专家 更新时间:2023-10-30 20:53:11 25 4
gpt4 key购买 nike

我正在尝试将 rewire 与我的 Karma(Webpack + Typescript)单元测试一起使用。我的单元测试是用 Typescript 编写的,与 Webpack 捆绑在一起,然后与 Karma 一起运行。我不断收到错误消息:

PhantomJS 2.1.1 (Windows 7 0.0.0) ERROR
Error: Cannot find module "module"
at src/myTest.spec.ts:187

查看了Rewire的代码,问题出在线路上

var Module = require("module"),

我知道有一个 Webpack Rewire插件,但是当我使用它时,我遇到了与那个相同的问题 already reported in an issue .

我所有不使用 rewire 的测试都工作正常。

这是我的测试文件:

import rewire = require("rewire");
const decorators = rewire("./decorators");

describe('something', () => {
it('should do something', () => {
decorators.__set__('Test', () => 'hello');
// In know this is pointless, but it's just to make sure that rewire works.
expect(decorators.Test).toBe('hello');
});
});

这是我的 webpack 配置:

var webpack = require('webpack');
var path = require('path');
var fs = require('fs');

var nodeModules = {};
fs.readdirSync('node_modules')
.filter(function (x) {
return ['.bin'].indexOf(x) === -1;
})
.forEach(function (mod) {
nodeModules[mod] = 'commonjs ' + mod;
});

// Our Webpack Defaults
var webpackConfig = {
entry: './src/index.ts',
target: 'node',
module: {
loaders: [
{test: /\.ts$/, loaders: ['ts-loader'], exclude: /node_modules/}
]
},
plugins: [
new webpack.BannerPlugin({banner: 'require("source-map-support").install();', raw: true, entryOnly: false}),
new webpack.optimize.UglifyJsPlugin({sourceMap: true}),
new webpack.optimize.AggressiveMergingPlugin(),
],
output: {
path: path.resolve(__dirname, './dist'),
filename: 'index.js',
sourceMapFilename: 'index.map'
},
externals: nodeModules,
devtool: 'source-map',
resolve: {
extensions: ['.ts', '.js']
}
};

module.exports = webpackConfig;

这是我的(相关的)karma.conf.js 部分:

frameworks: ['jasmine'],
files: [
'src/**/*.spec.ts',
'test/**/*.ts'
],
exclude: [],
webpack: {
devtool: webpackConfig.devtool,
module: webpackConfig.module,
resolve: webpackConfig.resolve,
},
webpackMiddleware: {
quiet: true,
stats: {
colors: true
}
},
preprocessors: {
'src/**/*.spec.ts': ['webpack', 'sourcemap'],
'test/**/*.ts': ['webpack', 'sourcemap']
},

最佳答案

我觉得你写错了import rewire = require("rewire");

应该是

import rewire from 'rewire' 

对于 ES6或

const rewire = require('rewire')

对于 ES5

关于node.js - 找不到模块 "module"- Rewire.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46193562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com