首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从具有webpack目标节点的node_modules导入css

从具有webpack目标节点的node_modules导入css
EN

Stack Overflow用户
提问于 2017-09-05 17:33:41
回答 1查看 814关注 0票数 1

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

代码语言:javascript
复制
import 'leaflet/dist/leaflet.css';

我在我的server.js中得到以下错误

代码语言:javascript
复制
/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)

使用导入

代码语言:javascript
复制
import '../../node_modules/leaflet/dist/leaflet.css';

很管用。

有没有办法配置一下,让我可以正常导入那些css文件?

下面是server.js的webpack配置

代码语言:javascript
复制
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()],
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-29 03:29:04

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

您可以使用whitelist选项来避免此行为。

下面是来自webpack-node-externalsdocumentation的一个例子

代码语言:javascript
复制
...
nodeExternals({
   // load non-javascript files with extensions, presumably via loaders
   whitelist: [/\.(?!(?:jsx?|json)$).{1,5}$/i],
}),
...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46051657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档