【问题标题】:no window object present webpack nodejs没有窗口对象存在 webpack nodejs
【发布时间】:2016-11-21 17:12:31
【问题描述】:

我正在使用带有 babel 的 webpack 来编译我的 ecmascript 6 代码。一切正常,但如果我添加某些依赖项,例如 requests npm 包。这是我的文件:

main.js

import os from 'os'

export class User {

  constructor(username) {
    this.username = username;
  }

  register() {
    console.log("registering...");
  }
}

var client = new User("hey")


console.log(user.register());

webpack 配置:

var webpack = require('webpack')

module.exports = {
  entry: [
    './src/main.js'
  ],
  output: {
    path: "dist",
    publicPath: "/dist/",
    filename: "stela.js"
  },
  watch: false,
  module: {
    loaders: [{
      test: /\.js$/,
      // excluding some local linked packages.
      // for normal use cases only node_modules is needed.
      exclude: /node_modules/,
      loader: 'babel'
    }, {
      test: /\.json$/,
      loader: 'json-loader'
    }]
  },
  externals: {
    fs: '{}',
    tls: '{}',
    net: '{}',
    console: '{}'
  },
  babel: {
    presets: ['es2015'],
    plugins: ['transform-runtime']
  },
  resolve: {
    modulesDirectories: ['node_modules']
  }
}

现在如果我运行webpack 然后运行node dist/stella.js 一切正常,它会注销registering...;但是,如果我添加某些依赖项,例如 requests npm 包:

...
import request from 'request'
...

我运行 webpack 一切都编译成功,没有错误,但我尝试运行 node dist/stella.js 并收到此错误:

throw new Error('no window object present');

【问题讨论】:

    标签: javascript node.js webpack


    【解决方案1】:

    默认情况下,Webpack 设置为针对浏览器,而不是 Node 环境。尝试在您的配置中设置target:

    module.exports = {
        // ...
        target: "node",
        // ...
    }
    

    【讨论】:

    • 请注意CommonsChunkPlugin 与taget: 'node' 不兼容。如果你有它,那么在为节点编译时应该将其删除。
    猜你喜欢
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2017-05-30
    • 2021-10-24
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多