我在使用webpack和babel-loader的堆栈中使用swagger生成的api。 webpack尝试将文件作为AMD模块加载并失败。
ERROR in D:/project/src/javascripts/api/location/model/Location.js
Module not found: Error: Cannot resolve module 'ApiClient' in D:\project\src\javascripts\api\location\model
@ D:/project/src/javascripts/api/location/model/Location.js 22:4-34
当我在swagger文件中删除amd-part时(如下),它可以工作:
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['superagent'], factory);
}
我知道webpack loader" import"支持参数define-> false来解决此类问题。但我找不到bable-loader的解决方案。 有人可以提出解决方案吗?
答案 0 :(得分:1)
就我而言,我在webpack配置中添加了另一条规则。我将swagger生成的客户端作为单独的包导入,所以我只希望imports-loader运行node_modules
。
请注意,下面的代码使用webpack 2语法。如果您使用的是旧版本的webpack,则需要进行调整。
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
exclude: /node_modules/,
},
{
test: /\.js$/,
use: 'imports-loader?define=>false',
include: /node_modules/,
},
],
}
我不确定你的情况如何,但你可能需要做类似的事情。 swagger生成的代码可能不需要通过babel运行。