我正在尝试使用webpack构建一个umd库;不管我做什么,都会得到一个警告:
在D:/Code/Node/sample.io/source/index.ts 3:24 Critical dependency:require函数的使用方式使依赖项无法静态提取
当我尝试require('./index.js')
生成的index.js时,我得到:
错误:找不到模块“。”
- 为完整起见,这里是我的所有文件:*
webpack.config.js:
module.exports = {
entry: {
index: __dirname + '/index'
},
output: {
filename: 'index.js',
library: 'mylib',
libraryTarget: 'umd',
umdNamedDefine: true
},
resolve: {
root: __dirname,
extensions: ['', '.ts', '.js'],
},
module: {
loaders: [
{ test: /\.ts$/, loaders: ['awesome-typescript-loader'] }
]
}
}
字符串
tsconfig.json:
{
"compilerOptions": {
"target": "es5",
"module": "umd"
},
"exclude": [
"node_modules"
]
}
型
package.json:
{
"name": "foo",
"version": "0.1.0",
"devDependencies": {
"awesome-typescript-loader": "^2.0.2",
"typescript": "^2.0.0",
"webpack": "^2.1.0-beta.17"
}
}
型
index.ts:
export function MyFunc(params) {
console.log("hello world");
}
型
node -v
= v6.3.0npm -v
= 3.7.5
奇怪的是,我的一个朋友说这对他们来说没有错误。虽然他是在node 4.2.6
上。如果我把模块改成commonjs,它工作得非常好,没有警告或错误。
3条答案
按热度按时间vof42yt11#
我认为你需要在tsconfig中使用
"module": "commonjs"
,这样typescript编译将发出webpack可以理解的模块,你仍然可以从webpack中获得umd输出。希望这有帮助
wtzytmuj2#
如果您无法将
module
从umd
更改为commonjs
,因为您只是使用它,并且您没有访问源代码的权限,则可以使用umd-compat-loader
作为解决方法。将以下rule
添加到webpack.config.js
:字符串
我在这个帖子里添加了一些细节。
kdfy810k3#
如果您无法修复根本原因,并且只想抑制此特定文件的警告,请将此添加到您的webpack配置中(确保将其更改为导致警告的文件):
字符串
或者,您也可以通过消息隐藏警告。例如,要隐藏包含“严重依赖关系”的警告,请执行以下操作:
型