Typescript + Webpack库生成“ ReferenceError:未定义自身”

时间:2020-11-02 04:36:44

标签: typescript webpack

我正在构建与Webpack 5.3.2捆绑在一起的TS库。然后,我尝试将输出包test.h加载到dist/scalextric.js脚本中:

node.js

我得到:

node -e 'console.dir(Object.keys(require("./dist/scalextric.js")));'

我需要修复此错误的帮助。这是我的各种配置:

  • ReferenceError: self is not defined at Object.<anonymous> (/media/kratib/Data/src/infojunkie/scalextric/dist/scalextric.js:2:215) at Module._compile (internal/modules/cjs/loader.js:1063:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10) at Module.load (internal/modules/cjs/loader.js:928:32) at Function.Module._load (internal/modules/cjs/loader.js:769:14) at Module.require (internal/modules/cjs/loader.js:952:19) at require (internal/modules/cjs/helpers.js:88:18) at [eval]:1:25 at Script.runInThisContext (vm.js:132:18) at Object.runInThisContext (vm.js:309:38)
webpack.config.js
  • const path = require('path'); module.exports = { entry: './src/index.ts', devtool: 'inline-source-map', module: { rules: [ { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/, }, ], }, resolve: { extensions: [ '.tsx', '.ts', '.js' ], }, output: { filename: 'scalextric.js', library: 'Scalextric', libraryTarget: 'umd', path: path.resolve(__dirname, 'dist'), umdNamedDefine: true, }, };
tsconfig.json
  • { "compilerOptions": { "module": "commonjs", "lib": ["dom", "esnext.asynciterable"], "target": "es6", "moduleResolution": "node", "outDir": "./dist", "sourceMap": true, "declaration": true, "importHelpers": true }, "include": [ "src" ] }
index.ts

我犯了任何明显的错误吗? Here's the full code

1 个答案:

答案 0 :(得分:3)

此问题与选项described here的选项output.globalObject有关。

我认为出于某些原因,webpack将其设置为self。但是为了在浏览器和节点上工作,您只需切换到this

output: {
  // ...
  globalObject: 'this',
},