我尝试使用react和webpack实现wow.js。
我是通过npm安装的。
npm install --save wow.js
安装完美。现在的问题是如何正确导入它。我不能让它继续下去。
我尝试过几点:
首先:
import wow from 'wow.js';
但是webpack无法编译它。它说无法找到该模块。即使我使用完整的网址import wow from /node_modules/wow.js
第二
我使用here中的此解决方案:
require('imports?this=>window!js/wow.js');
但是我仍然找不到模块(我改变了node_modules的路径)。
第三
来自here:
我使用了曝光模块并尝试new WOW().init();
它说Wow is undefined
。
我没有使用他的第一个解决方案,因为我希望我的html看起来很简单只有bundle.js
脚本。
我找不到任何其他解决方案。我该怎么做才能使它发挥作用?
谢谢!
我的webpack.config.js:
module.exports = {
entry: [
'webpack-dev-server/client?http://localhost:8080',
'bootstrap-loader',
'webpack/hot/only-dev-server',
'./src/js/index.js'
],
output: {
path: __dirname + "/build",
publicPath: "/build/",
filename: 'bundle.js'
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin(),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery"
})
],
module: {
loaders: [
{
exclude: /node_modules/,
loader: 'react-hot!babel'
},
{
test: /\.css$/,
loader: 'style!css!postcss'
},
{
test: /\.scss$/,
loader: 'style!css!postcss!sass'
},
{ test: /\.(woff2?|ttf|eot|svg|otf)$/, loader: 'url?limit=10000' },
{
test: 'path/to/your/module/wow.min.js',
loader: "expose?WOW"
}
]
},
resolve: {
extensions: ['', '.js', '.jsx']
},
devServer: {
historyApiFallback: true,
contentBase: './'
},
postcss: [autoprefixer]
};
答案 0 :(得分:10)
替代选项,不更新您的wepack配置。
npm install wowjs
import WOW from 'wowjs';
在您的组件的componentDidMount()
下:new WOW.WOW().init();
import React, {Component} from 'react';
import WOW from 'wowjs';
class Cmp extends Component {
componentDidMount() {
new WOW.WOW().init();
}
render() {
/* code */
}
}
export default Cmp;
答案 1 :(得分:6)
执行以下步骤
npm i exports-loader --save-dev
添加到webpack.config.js
此装载程序
{
test: require.resolve('wow.js/dist/wow.js'),
loader: 'exports?this.WOW'
}
将import
添加到您的应用
import WOW from 'wow.js/dist/wow.js';