2016-12-04 64 views
9

当我在项目中包含Express时,当我尝试使用webpack构建时总是遇到这些错误。Webpack Express无法解析模块'fs',请求依赖关系为表达式

webpack.config.dev.js

var path = require("path") 

module.exports = { 
    entry: { 
    "server": "./server/server.ts" 
    }, 
    output: { 
    path: path.resolve(__dirname, "dist"), 
    filename: "bundle.js", 
    publicPath: "/public/" 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.ts(x?)$/, 
     exclude: /node_modules/, 
     loader: "ts-loader" 
     }, { 
     test: /\.js(x?)$/, 
     exclude: /node_modules/, 
     loader: "babel-loader" 
     }, { 
     test: /\.json$/, 
     loader: "json-loader" 
     }, { 
     test: /\.scss$/, 
     exclude: /node_modules/, 
     loaders: ["style-loader", "css-loader", "postcss-loader", "sass-loader"] 
     }, { 
     test: /\.css$/, 
     loader: ["style-loader", "css-loader", "postcss-loader"] 
     }, { 
     test: /\.(jpe?g|gif|png|svg)$/i, 
     loader: 'url-loader?limit=10000' 
     } 
    ] 
    } 
} 

我已经试过:

  1. 安装 'FS',但它不工作
  2. 地方阅读改变节点FS属性。它消除了错误警告,但我认为这不是一个好的永久解决方案。

    module.exports = { 
        node: { 
        fs: "empty" 
        } 
    } 
    

    时间:2496ms 资产大小的块组块名称 bundle.js 761 KB 0发出]服务器 bundle.js.map 956 KB 0发出]服务器 + 119隐藏模块

    警告in ./~/express/lib/view.js 严重依赖关系: 78:29-56依赖项请求是表达式 @ ./~/express/lib/view.js 78:29-56 ERROR in ./~/express/lib/view.js

    未找到模块:错误:无法解析/ Users/clementoh/Desktop/boilerplate2/node_modules/express/lib中的模块'f' @ ./~/express/lib/view.js 18:9-22 ERROR in ./~/send/index.js

    未找到模块:错误:无法解析/ Users/clementoh/Desktop/boilerplate2/node_modules中的模块'f'/发送 @ ./~/send/index.js 24 :9-22 ERROR在./~/etag/index.js

    模块未找到:错误:无法解析模块 'FS' 在/用户/ clementoh /桌面/ boilerplate2/node_modules/ETAG @ ./~ /etag/index.js 22:12-25 错误在./~/destroy/index.j小号

    模块未找到:错误:/无法解析模块 'FS' 用户/ clementoh /桌面/ boilerplate2/node_modules /销毁 @ ./~/destroy/index.js 14:17-30 时发生错误, /~/mime/mime.js

    模块未找到:错误:无法解析/ Users/clementoh/Desktop/boilerplate2/node_modules/mime中的模块'fs @ ./~/mime/mime.js 2: 9-22

+5

你有没有尝试在你的'webpack.config.js'中添加'“target”:“node”'? – Aurora0001

+0

哦,哈哈,实际上解决了'FS'问题:)我将如何去解决警告? - 关键依赖:78:29-56依赖关系的请求是一个表达式@ ./~/express/lib/view.js 78:29-56。/〜/ express/lib/view.js中的错误' – Clement

+0

我记得能够通过简单地销毁'node_modules'文件夹并再次执行'npm install'来多次清除这种事情。 – Roope

回答

15

只是发布一个答案,因为不是每个人都阅读关于SO的评论。 @ Aurora0001钉牢它。的WebPack的配置需要有这一套:

"target": "node" 
+1

如果我正在构建Web应用程序,将目标设置为“节点”是否正确? –

+1

@AbhishekNalin不,它不是。你应该设置'目标:网络' –

+0

在webpack.config我应该添加这个? –

2

我是一个堆栈角2 - 电子 - 的WebPack,我需要用FS到我的服务,我终于找到了如何做:

1)内您的webpack.common.js,请指定target:'electron-renderer'

2)在您的服务或组件中:import * as fs from 'fs';并使用fs,就像节点项目一样。

希望它有帮助!

0

我通过两个步骤解决了这个问题:

  1. 删除node_modules目录

  2. 添加target:'node'到的WebPack配置文件

然后运行npm install。它对我很好。