gpt4 book ai didi

javascript - 使用 webpack 目标 Node 从 node_modules 导入 css

转载 作者:行者123 更新时间:2023-11-30 11:31:35 25 4
gpt4 key购买 nike

我目前正在构建一个带有服务器端渲染的 React 应用程序。我正在使用一些带有 css 文件的库。当我尝试像这样导入它们时:

import 'leaflet/dist/leaflet.css';

我的 server.js 中出现以下错误:

/my/app/path/node_modules/leaflet/dist/leaflet.css:3
.leaflet-pane,
^

SyntaxError: Unexpected token .
at createScript (vm.js:74:10)
at Object.runInThisContext (vm.js:116:10)
at Module._compile (module.js:533:28)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:503:32)
at tryModuleLoad (module.js:466:12)
at Function.Module._load (module.js:458:3)
at Module.require (module.js:513:17)
at require (internal/module.js:11:18)
at Object.__webpack_exports__.a (/my/app/path/server.js:725:18)

导入

import '../../node_modules/leaflet/dist/leaflet.css';

有效。

有什么方法可以配置 webpack 让我可以正常导入那些 css 文件吗?

这是 server.js 的 webpack 配置:

const nodeExternals = require('webpack-node-externals');
const postcssImport = require('postcss-import');
const cssnext = require('postcss-cssnext');
const cssnano = require('cssnano');

module.exports = {
entry: './src/server.js',
output: {
filename: 'server.js',
path: __dirname,
},
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
options: {
presets: [
'react',
['env', {
modules: false,
targets: {
node: process.versions.node,
},
}],
],
},
},
{
test: /\.css$/,
use: [
'css-loader',
{
loader: 'postcss-loader',
options: {
plugins: [
postcssImport,
cssnext,
cssnano({
safe: true,
autoprefixer: false,
}),
],
},
},
],
},
{
test: /\.png$/,
use: ['url-loader?limit=100000'],
},
],
},
target: 'node',
externals: [nodeExternals()],
};

最佳答案

这是 webpack-node-externals 的一个问题,它阻止捆绑位于 node_modules 目录下的所有资源。

您可以使用白名单选项来避免这种行为。

这是来自 documentation 的示例webpack-node-externals:

...
nodeExternals({
// load non-javascript files with extensions, presumably via loaders
whitelist: [/\.(?!(?:jsx?|json)$).{1,5}$/i],
}),
...

关于javascript - 使用 webpack 目标 Node 从 node_modules 导入 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46051657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com