错误:找不到要导入的文件或无法读取:~bootstrap/scss/bootstrap
Posted
技术标签:
【中文标题】错误:找不到要导入的文件或无法读取:~bootstrap/scss/bootstrap【英文标题】:Error: File to import not found or unreadable: ~bootstrap/scss/bootstrap 【发布时间】:2018-07-04 05:21:34 【问题描述】:我按照getbootstrap.com 的说明进行操作,认为一切都会正常进行。还不是很远:\
一切似乎都很好,直到我尝试加载页面,此时我的 Express.js 应用程序抛出错误
[[sass] error: File to import not found or unreadable: ~bootstrap/scss/bootstrap.
Parent style sheet: .../sass/app.scss at options.error (.../node-sass/lib/index.js:291:26)
我已经尝试过 npm install、重新启动服务器、查看 Google、***(是的,我知道有很多类似的问题,但没有一个回答我的问题)、Bootstrap 4 GitHub 问题页面,到目前为止我一直想不出答案。
可能是我将依赖项安装在错误的位置吗? (开发而不是生产或相对)
为什么会出现这个错误??
我的 webpack.config.js 文件看起来像这样......
module.exports =
entry: './src/index.js',
output:
path: __dirname + '/public',
filename: 'bundle.js'
,
module:
loaders: [
test: /\.json$/,
loader: 'json-loader'
,
test: /\.js$/,
loader: 'babel-loader'
,
test: /\.(scss)$/,
use: [
loader: 'style-loader', // inject CSS to page
,
loader: 'css-loader', // translate CSS into CommonJS modules
,
loader: 'postcss-loader', // run post CSS actions
options:
plugins: function () // post css plugins, can be exported to postcss.config.js
return [
require('precss'),
require('autoprefixer')
];
,
loader: 'sass-loader' // compile Sass to CSS
]
]
;
我的 package.json 文件
...
"scripts":
"start": "nodemon --exec babel-node server.js --ignore public/",
"dev": "webpack -wd",
"test": "echo \"Error: no test specified\" && exit 1"
,
"dependencies":
"axios": "^0.17.1",
"bootstrap": "^4.0.0",
"ejs": "^2.5.7",
"express": "^4.16.2",
"jquery": "^3.3.1",
"mongoose": "^5.0.0",
"node-sass-middleware": "^0.11.0",
"popper.js": "^1.12.9",
"precss": "^3.1.0",
"react": "^16.2.0",
"react-dom": "^16.2.0"
,
"devDependencies":
"autoprefixer": "^7.2.5",
"babel-cli": "^6.26.0",
"babel-eslint": "^8.2.1",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.1",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"css-loader": "^0.28.9",
"eslint": "^4.15.0",
"eslint-plugin-react": "^7.5.1",
"node-sass": "^4.7.2",
"nodemon": "^1.14.11",
"postcss-loader": "^2.0.10",
"sass-loader": "^6.0.6",
"style-loader": "^0.19.1",
"webpack": "^3.10.0"
postcss.config.js
module.exports =
plugins: [
require('autoprefixer')
]
;
在 app.scss 里面我有
@import "custom";
@import "~bootstrap/scss/bootstrap";
【问题讨论】:
尝试先导入“bootstrap/scss/bootstrap”。 @DayOne 我假设您指的是 app.scss 中的@import
。有什么理由会有所作为吗?两行@import
是文件中的前两行,它们的显示方式如getbootstrap.com/docs/4.0/getting-started/webpack 中的文档所示
如果我理解正确的话,当 Sass 被自己的 CLI 预编译时,它自己处理 @imports
,因此不理解 ~
表示法。因此,您可以首先导入@import "bootstrap/scss/bootstrap";
,或者将~
符号替换为node_modules/
,而不是它可能会起作用。
@DayOne 好的,我会试试看。感谢您的洞察力。
@DayOne,很抱歉我花了这么长时间才回复你,但"node_modules/bootstrap/scss/bootstrap";
成功了; "bootstrap/scss/bootstrap";
没有。请“回答”,这样我就可以给你信用。我仍然不明白为什么node_modules/...
工作但bootstrap/...
没有?无论如何,+1。谢谢!
【参考方案1】:
当您在除基本根 style.scss
之外的任何 scss 文件中从 node_modules 进行导入时,就会发生这种情况。试试把它放在根style.scss
,应该可以的。
【讨论】:
我只有一个scss文件。【参考方案2】:当 Sass 被自己的 CLI 预编译时,它自己处理 @imports
,因此有时不理解 ~
表示法。因此,您可以首先导入 "node_modules/bootstrap/scss/bootstrap";
并替换 ~
用node_modules/
代替。
【讨论】:
谢谢,我得到了这个工作,但我不得不返回几个目录。:@import '../../node_modules/bootstrap/scss/bootstrap';
你是说scss/functions目录不需要存在?【参考方案3】:
我遇到了类似的错误
找不到或无法读取要导入的文件: node_modules/bootstrap-sass/assets/stylesheets/bootstrap
只需将“bootstrap-sass”:“^3.3.7”添加到您的 package.json 中的 devDependencies,然后在您的项目目录中运行 npm update、npm install。
【讨论】:
这适用于我添加“bootstrap-scss”和@import“~bootstrap-scss/bootstrap”; 未来读者:注意在bootstrap
、bootstrap-sass
和bootstrap-scss
中选择正确的包。对于问题中描述的错误,将 bootstrap
作为依赖项应该可以工作。【参考方案4】:
如果您有任何问题并且无法解决,请尝试以下操作:
打开您尝试导入的 scss 文件。
纠正它可能尝试从不同空间导入的地址。
【讨论】:
【参考方案5】:对我来说,我必须改变我的导入方式
@import '../../../node_modules/bootstrap/scss/bootstrap';
然后就可以了
【讨论】:
这行得通,谢谢。奇怪的是,当我最初设置它时它正在工作,我打赌我离开它过夜然后回来它就停止了。【参考方案6】:我没有使用 webpack,但是当我尝试像这样在我的 scss 文件中导入引导程序时遇到了同样的错误:
@import 'bootstrap';
如果我在我的情况下像这样导入它会起作用:
@import "../../../../../bootstrap/scss/bootstrap";
但由于那不够干净,我不喜欢,我发现我可以从以下位置更改我的 gulp scss 任务:
.pipe(plugins.sass())
到:
.pipe(plugins.sass(
outputStyle: 'nested',
precision: 3,
errLogToConsole: true,
includePaths: ['node_modules/bootstrap/scss']
))
(注意 includePaths 部分)现在我可以使用了
@import 'bootstrap';
在我的 scss 文件中
【讨论】:
我在这里稍微阐述一下 2020 年的方法:***.com/a/65239936/2223106【参考方案7】:我正在使用 Solidus,并且在开始使用 Solidus 进行引导工作时,我遇到了同样的问题。 下面的东西对我有用,因为我们必须显示引导程序所在的完整路径。
@import "../../../../../node_modules/bootstrap/scss/bootstrap";
【讨论】:
【参考方案8】:我通过以下方式解决了问题:
删除节点模块 npm 安装 ng 服务有效;)
【讨论】:
【参考方案9】:我刚刚运行 npm i bootstrap
并且它成功了。
【讨论】:
【参考方案10】:我遇到了类似的问题,最终对我的修复非常基本。
我只需将"../node_modules/bootstrap/scss/bootstrap";
更改为"node_modules/bootstrap/scss/bootstrap";
。
【讨论】:
【参考方案11】:在 Rails 7.0.1 中,使用rails new myapp --css=bootstrap
安装后,出现同样的错误。问题已通过以下方式解决:
application.erb
中的stylesheet_link_tag
替换为:stylesheet_link_tag "application.bootstrap", "data-turbo-track": "reload"
将app/assets/stylesheets/application.scss
重命名为app/assets/stylesheets/application.bootstrap.scss
将内容替换为@import '../../../node_modules/bootstrap/scss/bootstrap';
【讨论】:
以上是关于错误:找不到要导入的文件或无法读取:~bootstrap/scss/bootstrap的主要内容,如果未能解决你的问题,请参考以下文章
错误:找不到要导入的文件或无法读取:~bootstrap/scss/bootstrap
webpack 错误:找不到要导入的文件或无法读取:波旁威士忌,如何解决?
Rails 3 应用程序中的 Sass 导入错误 - “找不到或无法读取要导入的文件:指南针”
找不到或无法读取要导入的 Angular CLI SCSS 文件
如何解决(插件 postcss)错误:找不到或无法读取要导入的文件:smui-theme. Material UI Svelte 项目