npm link 与 webpack - 找不到模块
npm link with webpack - cannot find module
我正在尝试 npm link 一个模块到一个使用 webpack 作为其捆绑器的项目。当然,在尝试了很多东西之后,我不断收到这个错误:
ERROR in ./src/components/store/TableView.jsx
Module not found: Error: Cannot resolve module 'react-bootstrap-table'
以下是我执行此操作时采取的具体步骤:
1.) cd ../forks/react-bootstrap-table
2.) npm link
(success, checked ~/.nvm/.../node_modules/react-bootstrap-table for symlink and it's there)
3.) cd ../../projRoot/
4.) npm link react-bootstrap-table
(no errors thrown?, says successful link)
5.) node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js
我尝试过的解决方案:
- https://webpack.github.io/docs/troubleshooting.html
- How to make a linked component peerDepdencies use the equivalent node_modules of the script being linked to?
- 还有 google serps
上的许多紫色 link
webpack.config.js
const webpack = require('webpack')
const path = require('path')
const ROOT_PATH = path.resolve(__dirname)
module.exports = {
devtool: process.env.NODE_ENV === 'production' ? '' : 'source-map',
entry: [
'webpack/hot/only-dev-server',
'./src/index.js'
],
module: {
loaders: [{
test: /\.jsx?$/,
exclude: /node_modules/,
loaders: ['react-hot','babel']
},
{
test: /\.scss$/,
loaders: ['style','css','sass'],
exclude: /node_modules/
},
{
test: /\.css$/,
loaders: ['style','css']
},
{
test: /\.(ttf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
loader: 'file-loader'
}
]
},
resolve: {
extensions: ['', '.js', '.jsx'],
fallback: path.resolve(__dirname, './node_modules')
},
resolveLoader: {
fallback: path.resolve(__dirname, './node_modules')
},
output: {
path: process.env.NODE_ENV === 'production' ? path.resolve(ROOT_PATH, 'app/dist') : path.resolve(ROOT_PATH, 'app/build'),
publicPath: '/',
filename: 'bundle.js'
},
devServer: {
contentBase: path.resolve(ROOT_PATH),
historyApiFallback: true,
hot: true,
inline: true,
progress: true,
stats: 'errors-only',
host: '192.168.1.115'
},
plugins: [
new webpack.HotModuleReplacementPlugin()
]
}
备注:
1.这是项目中唯一的symlink
2. 我 运行 npm install inside forked version(也试过,没有用)
3.我用的是NVM,但是之前没有webpack的时候用过symlinks成功了。
我已经在这几天了,任何帮助将不胜感激。
好的,伙计们,这是针对我的用例的,但请确保按照所有说明完全构建您要符号链接的库。最初,我进行了 npm install 和 gulp build,但这还不够。我不得不 运行 一些额外的命令来让库完全构建。
现在可以了!如果您仍然遇到问题,请查看您正在符号链接的每个库的文档,并使用我的 webpack 配置作为解析外部库的模板。
我遇到了与 webpack
类似的问题,最后添加了这个我的 webpack.config.js
:
module.exports = {
resolve: {
symlinks: false
}
};
这里是link到webpack docs。由于你的问题发生在 webpack
和他们的 api 上,所以我不知道我的回答对你的问题还有多大意义。但对于今天面临这个或类似问题的人来说,这可能是一个解决方案。可见,还是有人抱怨:
- Webpack GitHub Issue 1643
- Webpack GitHub Issue 1866
还要确保在链接包中安装并执行了 bundle 和 yarn
以防万一它对其他人有用,将 resolve.symlinks
配置添加到 false
suggested by @Beat 的解决方案对我来说还不够,我必须执行以下步骤来解决它:
在图书馆:
- 将生成问题的库设置为
package.json
中的 peerDependencies
而不是 dependencies
或 devDependencies
,例如在我的例子中 react
:
"peerDependencies": {
"react": "^16.8.6",
...
}
- 运行
npm install
- 构建库(在我的例子中,使用
rollup -c
npm 脚本
在我的主应用中:
- 更改我的库的版本以指向我在
package.json
中具有相对路径的本地项目,例如
"dependencies": {
"my-library": "file:../../libraries/my-library",
...
}
将 resolve.symlinks = false
添加到我的主应用程序的 webpack 配置中
将 --preserve-symlinks-main
和 --preserve-symlinks
添加到我的 package.json
启动脚本中,例如:
"scripts": {
"build": "set WEBPACK_CONFIG_FILE=all&& webpack",
"start": "set WEBPACK_CONFIG_FILE=all&& webpack && node --preserve-symlinks-main --preserve-symlinks dist/server.js",
}
- 运行
npm install
- 运行
npm run start
我正在尝试 npm link 一个模块到一个使用 webpack 作为其捆绑器的项目。当然,在尝试了很多东西之后,我不断收到这个错误:
ERROR in ./src/components/store/TableView.jsx
Module not found: Error: Cannot resolve module 'react-bootstrap-table'
以下是我执行此操作时采取的具体步骤:
1.) cd ../forks/react-bootstrap-table
2.) npm link
(success, checked ~/.nvm/.../node_modules/react-bootstrap-table for symlink and it's there)
3.) cd ../../projRoot/
4.) npm link react-bootstrap-table
(no errors thrown?, says successful link)
5.) node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js
我尝试过的解决方案:
- https://webpack.github.io/docs/troubleshooting.html
- How to make a linked component peerDepdencies use the equivalent node_modules of the script being linked to?
- 还有 google serps
webpack.config.js
const webpack = require('webpack')
const path = require('path')
const ROOT_PATH = path.resolve(__dirname)
module.exports = {
devtool: process.env.NODE_ENV === 'production' ? '' : 'source-map',
entry: [
'webpack/hot/only-dev-server',
'./src/index.js'
],
module: {
loaders: [{
test: /\.jsx?$/,
exclude: /node_modules/,
loaders: ['react-hot','babel']
},
{
test: /\.scss$/,
loaders: ['style','css','sass'],
exclude: /node_modules/
},
{
test: /\.css$/,
loaders: ['style','css']
},
{
test: /\.(ttf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
loader: 'file-loader'
}
]
},
resolve: {
extensions: ['', '.js', '.jsx'],
fallback: path.resolve(__dirname, './node_modules')
},
resolveLoader: {
fallback: path.resolve(__dirname, './node_modules')
},
output: {
path: process.env.NODE_ENV === 'production' ? path.resolve(ROOT_PATH, 'app/dist') : path.resolve(ROOT_PATH, 'app/build'),
publicPath: '/',
filename: 'bundle.js'
},
devServer: {
contentBase: path.resolve(ROOT_PATH),
historyApiFallback: true,
hot: true,
inline: true,
progress: true,
stats: 'errors-only',
host: '192.168.1.115'
},
plugins: [
new webpack.HotModuleReplacementPlugin()
]
}
备注:
1.这是项目中唯一的symlink
2. 我 运行 npm install inside forked version(也试过,没有用)
3.我用的是NVM,但是之前没有webpack的时候用过symlinks成功了。
我已经在这几天了,任何帮助将不胜感激。
好的,伙计们,这是针对我的用例的,但请确保按照所有说明完全构建您要符号链接的库。最初,我进行了 npm install 和 gulp build,但这还不够。我不得不 运行 一些额外的命令来让库完全构建。
现在可以了!如果您仍然遇到问题,请查看您正在符号链接的每个库的文档,并使用我的 webpack 配置作为解析外部库的模板。
我遇到了与 webpack
类似的问题,最后添加了这个我的 webpack.config.js
:
module.exports = {
resolve: {
symlinks: false
}
};
这里是link到webpack docs。由于你的问题发生在 webpack
和他们的 api 上,所以我不知道我的回答对你的问题还有多大意义。但对于今天面临这个或类似问题的人来说,这可能是一个解决方案。可见,还是有人抱怨:
- Webpack GitHub Issue 1643
- Webpack GitHub Issue 1866
还要确保在链接包中安装并执行了 bundle 和 yarn
以防万一它对其他人有用,将 resolve.symlinks
配置添加到 false
suggested by @Beat 的解决方案对我来说还不够,我必须执行以下步骤来解决它:
在图书馆:
- 将生成问题的库设置为
package.json
中的peerDependencies
而不是dependencies
或devDependencies
,例如在我的例子中react
:
"peerDependencies": {
"react": "^16.8.6",
...
}
- 运行
npm install
- 构建库(在我的例子中,使用
rollup -c
npm 脚本
在我的主应用中:
- 更改我的库的版本以指向我在
package.json
中具有相对路径的本地项目,例如
"dependencies": {
"my-library": "file:../../libraries/my-library",
...
}
将
resolve.symlinks = false
添加到我的主应用程序的 webpack 配置中将
--preserve-symlinks-main
和--preserve-symlinks
添加到我的package.json
启动脚本中,例如:
"scripts": {
"build": "set WEBPACK_CONFIG_FILE=all&& webpack",
"start": "set WEBPACK_CONFIG_FILE=all&& webpack && node --preserve-symlinks-main --preserve-symlinks dist/server.js",
}
- 运行
npm install
- 运行
npm run start