webpack:在 MacOS 上很好,在 linux 上加载错误 [英] webpack: fine on MacOS, loader errors on linux

查看:32
本文介绍了webpack:在 MacOS 上很好,在 linux 上加载错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了一些 webpack/raw-loader/sass-sync-loader 问题.在我的本地机器上,一切正常.但是,在我的 linux CI 服务器上,webpack 失败了.

I'm having some webpack/raw-loader/sass-sync-loader issues. On my local machine, things run fine. However, on my linux CI server, webpack fails.

有人可以指导我如何开始诊断正在发生的事情吗?我不太确定从哪里开始.

Can someone give me a pointer as to how to start diagnosing whats going on? I'm not too sure where to start.

这是 linux 上的 webpack 输出:

Here's the webpack output on linux:

Hash: 314a28b414704badd07b
Version: webpack 1.4.15
Time: 7350ms
   Asset     Size  Chunks             Chunk Names
 main.js  1648360       0  [emitted]  main
main.css   138069       0  [emitted]  main
    + 595 hidden modules

ERROR in ./~/raw-loader!./~/autoprefixer-loader
!./node_loaders/sass-sync-loader.js?sync&outputStyle=compact&
includePaths[]=/home/u65/src/repo/desktop-prototype/.generated/design-assets&
includePaths[]=/home/u65/src/repo/desktop-prototype/.generated/design-properties&
includePaths[]=/home/u65/src/repo/desktop-prototype/app!./app/index.scss
Module build failed: 
 @ ./app/index.scss 4:14-564

<SNIP>

ERROR in ./app/index.scss Module build failed:
Error: Didn't get a result from child compiler     
at Object.<anonymous> (/home/u65/src/repo/desktop-prototype/
node_modules/extract-text-webpack-plugin/loader.js:90:22)
at Tapable.<anonymous> (/home/u65/src/repo/desktop-prototype/node_modules/webpack/lib/Compiler.js:210:10)     at /home/u65/src/repo/desktop-prototype/node_modules/webpack/lib/Compiler.js:397:12     at Tapable.next (/home/u65/src/repo/desktop-prototype/node_modules/webpack/node_modules/tapable/lib/Tapable.js:69:11)     at Object.<anonymous> (/home/u65/src/repo/desktop-prototype/node_modules/extract-text-webpack-plugin/loader.js:77:5)     at Tapable.next (/home/u65/src/repo/desktop-prototype/node_modules/webpack/node_modules/tapable/lib/Tapable.js:71:37)     at CachePlugin.<anonymous> (/home/u65/src/repo/desktop-prototype/node_modules/webpack/lib/CachePlugin.js:40:4)     at Tapable.applyPluginsAsync (/home/u65/src/repo/desktop-prototype/node_modules/webpack/node_modules/tapable/lib/Tapable.js:73:13)     at Tapable.<anonymous> (/home/u65/src/repo/desktop-prototype/node_modules/webpack/lib/Compiler.js:394:9)     at Tapable.<anonymous> (/home/u65/src/repo/desktop-prototype/node_modules/webpack/lib/Compilation.js:534:13)

<SNIP>

ERROR in ./~/raw-loader!./~/autoprefixer-loader!
./node_loaders/sass-sync-loader.js?sync&outputStyle=compact&includePaths[]=
/home/u65/src/repo/desktop-prototype/.generated/designassets&
includePaths[]=/home/u65/src/repo/desktop-prototype/.generated/design-
properties&includePaths[]=/home/u65/src/repo/desktop-prototype/
app!./app/index.scss     
Module build failed: Child extract-text-webpack-plugin:         
+ 1 hidden modules
Child extract-text-webpack-plugin:         
+ 1 hidden modules

推荐答案

正如@Richard_Boardman 所指出的,Mac 不区分大小写,但 Linux 是.因此,任何拼写错误的案例在您的 Mac 开发环境中都可以正常工作,但在您部署时会失败.

As @Richard_Boardman pointed out, Mac is not case-sensitive, but Linux is. So, any misspellings of case will work fine in your Mac dev environment, but fail when you deploy.

您可以强制 Webpack 在开发服务器和构建中对其文件名和路径匹配更加严格 - 因此拼写错误将在您的开发箱上失败,而不是在服务器上 - 通过使用像 case-sensitive-paths-webpack-plugin.

You can force Webpack to be more exacting with its filename and path matching in both dev server and build - so misspellings will fail while still on your dev box, rather than on the server - by using a Webpack plugin like case-sensitive-paths-webpack-plugin.

安装后,您可以编写一些测试,例如:

Once you have that installed, you could write some tests such as:

describe("Case-Sensitive Paths Plugin", () => {
  it('shouldn\'t interfere with correctly-spelled imports', () => {
    const getUser1 = require('../src/utils/api');
    expect(getUser1).toBeDefined();
  });

  it('should cause mistakes in filename case to fail import', () => {
    expect(() => {const getUser2 = require('../src/utils/API');}).toThrow();
  });

  it('should cause mistakes in path case to fail import', () => {
    expect(() => {const getUser3 = require('../src/Utils/api');}).toThrow();
  });
});

这篇关于webpack:在 MacOS 上很好,在 linux 上加载错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆