Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法读取属性';使用_env_变量';未定义的_Javascript_Node.js_Express_Testing_Jestjs - Fatal编程技术网

Javascript 无法读取属性';使用_env_变量';未定义的

Javascript 无法读取属性';使用_env_变量';未定义的,javascript,node.js,express,testing,jestjs,Javascript,Node.js,Express,Testing,Jestjs,我正在学习使用数据库迁移。这个很好用 作为下一步,我希望能够运行测试。我的测试非常简单(没有使用任何与Sequelize相关的东西),看起来像 import request from 'supertest'; import app from '../src/app.js'; describe('GET /', () => { it('should render properly', async () => { await request(app).get('/').ex

我正在学习使用数据库迁移。这个很好用

作为下一步,我希望能够运行测试。我的测试非常简单(没有使用任何与Sequelize相关的东西),看起来像

import request from 'supertest';
import app from '../src/app.js';

describe('GET /', () => {
  it('should render properly', async () => {
    await request(app).get('/').expect(200);
  });
});

describe('GET /404', () => {
  it('should return 404 for non-existent URLs', async () => {
    await request(app).get('/404').expect(404);
    await request(app).get('/notfound').expect(404);
  });
});
当我以npm测试的方式运行这个测试时,我得到的错误是

➜  contactz git:(master) ✗ npm test

> express-babel@1.0.0 test /Users/harit/bl/sources/webs/q2/contactz
> jest

 FAIL  test/routes.test.js
  ● Test suite failed to run

    TypeError: Cannot read property 'use_env_variable' of undefined

      at Object.<anonymous> (db/models/index.js:11:11)
      at Object.<anonymous> (src/routes.js:3:14)
      at Object.<anonymous> (src/app.js:4:15)
      at Object.<anonymous> (test/routes.test.js:2:12)
          at Generator.next (<anonymous>)
          at Promise (<anonymous>)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        0.702s
Ran all test suites.
npm ERR! Test failed.  See above for more details.
➜  contactz git:(master) ✗
➜  contactz git:(主控)✗ npm试验
>快车-babel@1.0.0test/Users/harit/bl/sources/webs/q2/contactz
>开玩笑
失败测试/routes.test.js
● 测试套件无法运行
TypeError:无法读取未定义的属性“use\u env\u variable”
反对


有人能帮我知道出了什么问题以及如何修复吗?

你能试试这个命令而不是npm测试吗?
jest yourfile.js--env=node--runInBand

我只是使用了javascript trim()

  • 以前
  • 之后

这是我的

我是服务器方面的新手,特别是heroku+node express+sequelize。所以在我的例子中,我在Heroku设置上的配置变量是错误的

NODE_ENV
被设置为错误的值,如
live
,而不是
production


假设您也在使用Sequelize,则正确的值
production
必须等于您的
config.js

我今天收到了这个错误并修复了它

在运行jest时,默认情况下,它会将节点_ENV(process.ENV.NODE_ENV)设置为“test”

如果使用sequelize cli生成基本sequelize文件,那么在sequelize config.json文件中(默认情况下)应该使用三种类型的配置选项,即:“开发”、“测试”和“生产”。 然而,我看到您正在使用自己的config.js文件,并且没有“测试”选项,只有开发和生产

当model/index.js文件正在查找所述的“test”选项,但发现它未定义时,您将收到此错误。具体地说,在它的第12行,将发现配置为未定义,并抛出错误,查找未定义的use_env_variable属性

解决方案是将“test”配置添加到config.js文件中。只要复制用于开发的配置,它就会运行


*请注意,您可能应该为每种不同类型的配置设置不同的db,但这是另一个主题。

可能存在导入或路径问题
 process.env.NODE_ENV()                // return    "development "   with space
 process.env.NODE_ENV.**trim()**                // "development"  no space