首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rollup.js:外部依赖项中的未定义对象

问Rollup.js:外部依赖项中的未定义对象
EN

Stack Overflow用户
提问于 2016-01-24 08:13:32
回答 1查看 1.5K关注 0票数 5

我最近开始玩旱冰游戏。在按照可用的文档配置所有内容并将其捆绑起来之后,我从外部库中得到了许多关于未定义对象的错误。这类错误:来自密码js的Cannot read property 'parse' of undefined。它抱怨代码中的这一行:var ciphertext = Base64.parse(openSSLStr)。因此,Base64是未定义的。从捆绑在其中的不同外部库中,我很少有这样的错误。

我使用了一些外部依赖项: chart.js、crypto、mithril、moment、复数。

它们都与jspm完美地工作在一起。我决定试着加快速度,因为jspm现在太慢了。现在,我的外部依赖项有一半停止工作。我只从外部库获得“未定义的事物”和"...not a函数“类型的错误。

可能是什么原因呢?

这是我的rollup.config.js

代码语言:javascript
复制
import babel from 'rollup-plugin-babel';
import npm from 'rollup-plugin-npm';
import commonjs from 'rollup-plugin-commonjs';
import uglify from 'rollup-plugin-uglify';

    export default {
      entry: 'app/scripts/application/main.js',
      format: 'cjs',
      plugins: [
        npm({
          jsnext: true,
          main: true,
        }),
        babel({
          exclude: 'node_modules/**',
          presets: [ 'es2015-rollup' ],
        }),
        commonjs(),
        uglify(),
      ],
      dest: 'static/js/application.js',
    };

如果还需要其他细节,请告诉我。

谢谢。

编辑

我做了一个简单的测试--复制捆绑那些在我的应用程序中生成错误的库。

package.json

代码语言:javascript
复制
{
  "name": "minion",
  "private": true,
  "babel": {
    "presets": [
      "es2015-rollup"
    ]
  },
  "dependencies": {
    "chart.js": "^1.0.2",
    "crypto-js": "^3.1.6",
    "mithril": "^0.2.2-rc.1",
    "moment": "^2.11.1",
    "pluralize": "^1.2.1"
  },
  "devDependencies": {
    "babel-preset-es2015-rollup": "^1.1.1",
    "rollup-plugin-babel": "^2.3.9",
    "rollup-plugin-commonjs": "^2.2.0",
    "rollup-plugin-npm": "^1.3.0",
    "rollup-plugin-uglify": "^0.1.0"
  }
}

rollup.config.js

代码语言:javascript
复制
import babel from 'rollup-plugin-babel';
import npm from 'rollup-plugin-npm';
import commonjs from 'rollup-plugin-commonjs';
import uglify from 'rollup-plugin-uglify';

export default {
  entry: 'app/main.js',
  format: 'cjs',
  plugins: [
    npm({
      jsnext: true,
      main: true,
    }),
    babel({
      exclude: 'node_modules/**',
      presets: [ 'es2015-rollup' ],
    }),
    commonjs(),
    //uglify(),
  ],
  dest: 'static/js/app.js',
}

main.js

代码语言:javascript
复制
import Application from './application'
import pluralize from 'pluralize'


var text = Application.run()

console.log(`Testing encryption: ${text}`)
console.log(`Testing pluralization: ${pluralize('person')}`)

application.js

代码语言:javascript
复制
import crypt from 'crypto-js'

var Application = {
    run() {
      var ciphertext = crypt.AES.encrypt('Testing encryption...', 'password')
      var bytes  = crypt.AES.decrypt(ciphertext.toString(), 'password')
      return bytes.toString(crypt.enc.Utf8)
    }
}

export default Application

运行上述操作将生成错误。

EN

回答 1

Stack Overflow用户

发布于 2017-10-05 18:50:59

只是推测:可能是卷起和/或加密的一个错误。

在尝试在Node中运行js函数时,我也有类似的错误,当我在本地运行js时,js是可以的,但是当远程运行时它会抛出TypeError: Cannot read property 'split' of undefined。

我的代码与您的代码唯一的共同点是,它们都使用密码学,特别是密码-js 3.1.2汇总"hmac-sha256.js“,代码不是导入的而是原始的。

即使在删除了唯一的“拆分”实例之后,我仍然无法解决它(但是继续在本地运行)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34973542

复制
相关文章

相似问题

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